목록전체 글 (39)
나의 개발일기
제어의 역전 IoC(Inversion of Control) 외부에서 객체를 만들어서 주입하는 방식 말 그대로 메서드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미 매우 느슨하고 폭넓게 사용되는 용어 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 의존관계 주입 DI (Dependency Injection) 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계 주입이라 한다. 객체 인스턴스를 생성하고, 그 참조값을 전달해서 연결된다. 의존관계 주입을 사용하면 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 ..
SOLID 좋은 객체 지향 설계의 5가지 원칙 SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: 의존관계 역전 원칙 (Dependency inversion principle) SRP 단일 책임 원칙 (Single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있다. • 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변..
스레드 프로세스와 스레드(process & thread) 프로세스 : 실행 중인 프로그램, 자연 (resource)과 스레드로 구성 스레드 : 프로세스 내에서 실제 작업을 수행 모든 프로세스는 최소한 하나의 스레드를 가지고 있다. 프로세서 : 스레드 = 공장 : 일꾼 싱글 스레드 프로세스 = 자원 + 스레드 멀티 스레드 프로세스 = 자원 + 스레드 + 스레드 + 스레드 …+스레드 하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 스레드를 생성하는 것이 더 적은 비용이 든다. 멀티스레드의 장단점 장점 - 여러 모로 좋다. 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성(responseness)이 향상된다. 작업이 분리되어 코드가 간결해진다. 단점 - 프로그래밍할 때 고려해야 할 사항들이..
열거형(enum) 관련된 상수들을 같이 묶어 놓은 것. Java는 타입에 안전한 열거형을 제공 열거형을 정의하는 방법 enum 열거형 이름 {상수명 1, 상수명, …} enum Direction { EAST, SOUTH, WEST, NORTH} 열거형 타입의 변수를 선언하고 사용하는 방법 class Unit { int x, y; // 유닛의 위치 Direction dir; // 열거형 인스턴스 변수를 선언 void init() { dir = Direction.EAST; // 유닛의 방향을 EAST로 초기화 } } 열거형 상수의 비교에 == 와 compareTo 사용 가능 if (dir == Direction.EAST) { x++; } else if ( dir > Direction.WEST ) { // 에..
제네릭(Generics)란? 컴파일 시 타입을 체크(강화) 해 주는 기능 (complie-time type check) - jdk1.5 실행 중 발생(Runtime)하는 에러를 complie time 에러로 올린 것 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줌 장점 타입 안정성을 제공 - ClassCastException 형변환 에러 줄임 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다. 타입 변수 제네릭클래스를 작성할 때, Object타입(일반클래스) 대신 타입 변수(E)를 선언해서 사용. 객체를 생성 시, 타입변수(E) 대신 실제 타입 (Tv)을 지정(대입) 참조변수와 생성자에 넣어주어야 함 타입 일치 // 타입 변수 E 대신에 실제 타입 Tv를 대입 ArrayList tvList..
컬렉션(collection) 여러 객체(데이터)를 모아 놓는 것을 의미 프레임워크(framework) 표준화, 정형화된 체계적인 프로그래밍 방식 컬렉션 프레임워크(collection framework) 켈렉션(다수의 객체:data)을 다루기 위한 표준화된 프로그래밍 방식 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공 java.util패키지에 포함 컬렉션 클래스(collection class) 다수의 데이터를 저장할 수 있는 클래스 (예 Vector, ArrayList, Hashset) 컬렉션 프레임워크의 핵심 인터페이스 List : 저장, 순서 O, 중복 O 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. 구현클래스 : ArrayLise, LinkedList, Stack, Vector..