본문 바로가기

Com

[Java] 추상 메소드, 다형성 예제 / Abstract Method, polymorphism 예제 앞에서 올린 추상 메소드와 다형성개념을 간단한 코드 예제를 통해 살펴보겠습니다. 예제 프로그램은 간단하게 생산자(Productor)와 소비자(Consumer)가 거래를 하는것으로 짜보도록 하겠습니다. 생산자와 소비자는 서로 거래를 통해 물건과 돈을 교환합니다. 여기서 거래라는 비슷한 행위가 발생하는데 이것을 추상 메소드를 통해 구현하겠습니다. 거래라는 기능을 추상 메소드를 가진 Productor 클래스와 Consumer 클래스의 슈퍼클래스를 생성합니다. abstract class SuperClass { SuperClass(){ } abstract void trade(int cost, int numOfProduct); //추상 메소드 생성 가격과 물건의 갯수를 전달인자로 받는다 } 그리고 이 슈퍼클래스를 .. 더보기
[Server / 서버] WAS / Web Application Server / 웹 어플리케이션 서버 기존에는 Web Server가 인터페이스와 기능적인 측면 모두 담당했지만 Client의 환경이 다양해지면서 기능적 측면을 담당하는 부분과 인터페이스를 담당하는 부분으로 나누어진 것을 WAS(Web Application Server)라고 한다. WAS는 Web Server 기능(Interface, 요청, 응답)과 컨테이너 기능(처리)으로 이루어져있다. WAS의 기능을 크게 3가지로 나누어 볼 수 있다. 1. 프로그램 실행 환경과 DB 접속 기능을 제공 2. 여러개의 트랜잭션을 관리 3. 비즈니스 로직을 수행(기능적인 측면) WAS 기능 구성 Servlet 컨테이너 - 클라이언트에서 전송되는 Servlet 요청을 수행하는 프로그램 JSP 컨테이너 - JSP를 Servlet으로 변환하는 기능의 프로그램(Ser.. 더보기
[서버 / Server] 많이 사용하는 웹 서버 / Web Server 서버의 종류와 간단한 특징 IIS(Internet Information Service) Windows NT, 2000 등에서 사용 가능(구입하면 Option으로 붙어있음,라이센스필요= 유료) 기본 셋팅이 간편함(윈도우 환경이라 디렉토리 생성 및 관리가 쉬움) ASP 사용(ASP의 장점인 DB 접속시 시스템에 걸리는 과부화를 줄여줌) 보통 MSSQL을 사용 톰캣(Tomcat), 레진(Resin) JSP 사용 톰캣은 아파치 톰캣과 자카르타 톰캣이 있다. 아파치 톰캣은 Web Server 자카르타 톰캣은 Web Application Server(WAS) 톰캣과 레진의 차이점! 톰캣은 무료! 레진은 Professional 버전은 라이센스가 있어야 하고 Open Source 버전은 무료! Open Source 버.. 더보기
[Java] 추상 클래스 / 메소드 / Abstract Class / Abstract Method 추상 클래스와 추상 메소드에 대해 알아보겠습니다. 추상 클래스와 추상 메소드는 각각 클래스와 메소드 앞에 abstract를 붙여주면 됩니다. 그렇다면 추상 클래스와 추상 메소드를 왜 쓸까요? 추상 클래스를 쓰는 이유 1. 더 이상 객체를 생성하고 싶지 않을 때 -> 클래스 앞에 abstract를 붙여주게 되면 객체를 생성할 수 없습니다. 따라서 처음부터 객체를 생성하지 않는 클래스를 만들거나 어느 회사에서 더 이상 고객을 받지 않을 때 같은 경우에 클래스 앞에 abstract 를 붙여줍니다. 2. 두개의 서로 다른 클래스를 만들어야 하는데 두 클래스에 겹치는 내용이 많을 때 겹치는 내용을 추상 클래스로 생성하고 두개의 서로 다른 클래스에서 이 추상 클래스를 상속 -> 비슷한 내용을 가지는 두 클래스를 만.. 더보기
[Java] final 기능 final 의 기능은 크게 3가지 정도가 있습니다. 1. 변수 앞의 final 은 C에서 const 와 같은 역할로 상수를 만드는 역할을 한다. 2. 클래스 앞에 final 이 붙으면 클래스가 상속이 불가능하게 만든다. 3. 메소드 앞에 final 이 붙으면 오버라이딩이 되지않게 만든다. 더보기
[Java] 클래스의 정적 필드 / 정적 메소드 / Static Field / Static Method 1. Static Field / 정적 필드 Class를 생성할 때 변수 부분을 Field 라고 하는데 이 변수를 static 으로 선언을 해주게 되면 이 변수는 객체가 생성될 때 마다 생성되는 변수가 아니라 Class에 속하는 변수가 된다. 즉 int a; 가 있으면 객체가 생성될 때 마다 변수가 객체마다 a가 존재하지만 static int a; 라고 선언을 해주면 생성된 모든 객체가 a 를 공유하게 된다.(a가 1개만 존재하고 Class에 속하게 된다) 정적 필드는 모든 객체가 공유한다. 하지만 생성자(Constructor)의 인자로 정적 필드값을 변경한다면 정적 필드를 사용하는 의미가 없다. 정적 필드는 필요한 상수 값 같은 데이터를 저장한다. 2. Static Method / 정적 메소드 먼저 St.. 더보기
[Java] Overriding / 오버라이딩 / Overloading / 오버로딩 Method Overloading 클래스에서 생성자(Constructor)를 전달인자(Parameter)에 따라 여러가 생성할 수 있는데 이것을 메소드 오버로딩이라고 한다. 또 메소드 이름과 전달인자를 합쳐서 Method signature 라고한다 Method Overriding 상속 받은 서브클래스에서 슈퍼클래스의 메소드와 비슷한 기능이지만 수정이 필요할 경우 같은 메소드 이름으로 재정의 할 수 있다. 이것을 메소드 오버라이딩이라고한다. 메소드 오버라이딩은 같은 signature(같은 method name 과 parameter)에서만 일어난다. 더보기
[Java] Exception 처리 Java 에는 여러 Exception 들이 있습니다. 입출력에서 발생하는 IOException, 산술 연산중 발생하는 ArithmethicException(ex. 0으로 나누었을 때) 등등.. 여러 Exception 중 IOException 과 ArithmethicException, 인위적인 Exception 처리 방법을 알아보겠습니다. 1. IOException 다음 코드에서 BufferedReader 와 System.in.read() 는 IOException 을 발생시키므로 메인메소드 뒤에 throws IOException 을 추가해주면 컴파일이 되고 Exception 처리가 자동으로 됩니다. import java.io.*; public class Exception { public static voi.. 더보기
[Java] 연산에서 형변환 / Casting 이번에는 Java 에서 산술연산시에 형변환(Casting)에 대해 살펴보겠습니다. 다음 코드를 컴파일 하면 어떻게 될까요? public class Casting { public static void main(String[] args){ short a=1; short b=2; short c=a+b; } } } 이 코드를 컴파일하면 에러가 발생하게 되는데 그 이유는 정수형(short, long, byte) 변수를 연산하게 되면 자동으로 int 형으로 형변환이 발생하기 때문입니다. a+b 가 int 형으로 변환되고 int 형을 short 형 변수에 저장하려고 하기 때문에 에러가 발생합니다. 똑같이 변수 앞에 -를 붙여줘서 음수형으로 변환해도 데이터형이 int 형으로 변환됩니다. 더보기
[Java] String[]args / String args[] 자바를 처음 접하게 되면 C언어 에서 int main(void) 와 같이 처음에 아무 의미도 모르고 자동으로 메인 함수에 쓰게 되는 것이 있다.public static void main(String[]args) public 과 static 의 의미는 조금 공부하게 되면 금방 배우지만 String[]args 또는 String args[] 의 의미는 따로 나와있어도 매우 짧게 설명이 되어있어서 그냥 지나치기 쉬운 것 같다. 일단 형태는 다른 메소드의 파라미터 같이 메인 함수의 파라미터 자리에 들어가 있는데 왜 문자열일까? String[]args 는 명령형 파라미터라고 한다. 프로그램이 시작될 때 받는 명령어를 파라미터로 받는다는 것 입니다. String[]args 는 args 라는 배열을 의미하는 것 정도는.. 더보기