디자인 패턴이란 특정 기능을 만들기 위한 클래스들의 연결한것으로 각 클래스의 관계 정리 한 것으로 C언어로 작성된 GoF(Gang-Of-Four) 패턴이 객체지향에 맞는디자인 패턴을 정리한 것이고 자바 J2EE 관련은 Core J2EE Patterns에 정리 되어 있으며 해당 사이트에서 학습을 할 수 있습니다.디자인 패턴에 대한 학습자료는 디자인 패턴 | 개발/설계관련 | develop (gitbook.io) 에 작성하고 있습니다.1. 디자인 패턴 이란소프트웨어 설계에서 반복적으로 발생하는 문제들에 대한 해결책을 제공하는 일종의 베스트 프랙티스입니다.개발자들이 더 효율적이고 재사용 가능한 코드를 작성할 수 있도록 도와줍니다.디자인 패턴은 GoF(Gang of Four)의 23가지 패턴으로, 이들은 크게 ..

자바 표준 라이브러리 중 컬렉션collection에 있는 ArrayList와 LinkedList는 List 인터페이스를 구현한 것으로 JCFJava Collections Framework의 상속 구조는 다음과 같습니다. 그림 SEQ 그림 1 JCF성속구조 ArrayList는 내부적으로 배열을 사용하여 데이터를 저장하고 삽입/삭제 작업 시 해당 위치 이후의 모든 데이터를 이동하여 삽입/삭제시는 느리지만 데이터를 조회하는 작업에서는 인덱스를 통한 접근을 하여 빠른 성능을 제공합니다. LinkedList는 내부적으로 노드node로 구성이 되어 있어 삽입/삭제 작업 시 해당 노드의 위치만 변경하여 빠르지만 조회 작업 시 모든 노드를 검색하므로 느립니다. 그림 ArrayList As LinkedList 추가 또는..

1. Array와 ArrayList 차이점 일반적으로 Array 또는 ArrayList는 동일한 유형(Type)의 데이터 모음을 묶어서 그룹으로 사용하고 싶을 때 사용됩니다. 배열(Array)은 선언할 때 데이터가 들어갈 공간의 개수(길이)를 지정해야 합니다. 또한 크기가 지정되면 크기를 확장 또는 축소할 수 없습니다. 이것은 크기의 제약이 있는 것으로 주의가 필요합니다 1.1. Array Array는 크기를 가지고 있는 동일한 유형의 값을 저장하는 곳으로 int, long등과 같은 기본 테이터 유형과 코드에서 작성하는 데이터 객체를 요소로 가질 수 있지만 크기가 지정되어 있어서 축소나 확장을 하지 못하는 특성을 가지고 있습니다. 다음은 배열을 만드는 예제입니다. 코드 1.1-1 : 배열 만들기 1. S..

프로그램을 코드를 작성 할 떄 데이터를 그룹화 하여 처리 하는 것이 전체 소스의 많은 부분이다., 자바에서 Collection , Map을 사용 해서 데이터를 그룹화 하고 제공하는 API를 이용해서 이 부분을 작성 한다, Java 1.8이상 부터는 데이터 처리 하는데 임시 구현 코드 대신 질의로 표현 하여 Collection 데이터를 처리 할 수 있는데 이것을 Stream이라 한다. 1. Collection Interface 특징 인터페이스 구현클래스 특징 Set HashSet TreeSet 순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다. List LinkedList Vector ArrayList 순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. Queue LinkedLi..

Flyweight Pattern은 객체를 사용 할 때마다 new 로 객체를 인스턴스 화 하여 생성 하지 않고 한번 생성한 객체를 이용하여 공유하는 패턴으로 구조적 패턴에 속한다. 즉 인스턴스의 생성을 최소화 하여 메모리 사용을 절약할 수 있다 client : 실행을 트리거 하는 객체 FlyweightFatory : Flyweight 객체를 생성하기 위한 Factory Flyweight : 재사용하고자 하는 객체 예제 1. 재 사용하고자 하는 객체 public interface Flyweight { String operation(int extrinsicState); } public class Flyweight1 implements Flyweight{ private String intrinsicStatus;..

Class 내부에 Class가 있는 Class 1. 종류 Class Member처럼 사용하는 InstanceMember Inner Class, Static Member Inner Class Method내부에서 한정적으로 사용하는 Local Inner Class 이름을 알 수 없는 객체로 한 번만 사용하고 버려지는 객체 ( Anonymous Class : 익명 ) Static Inner Interface 2. Instance Member Inner Class 객체 내부에 있는 클래스로 Instance Member의 특성을 가지고 있다. 모든 접근 지정자를 사용할 수 있으며 실제로는 Outer Class이다. ( 클래스$이너클래스 ) 2. Static Member Inner Class 객체 내부에 있는 클래..

포괄적인, 총칭의, 회사 이름이 붙지 않은, 일반 명칭으로 판매되는 사전적 의미로, 딱 하나를 정하지 않고 범용적이고 포괄적이라는 의미 Data type을 특정한 type하나로 정하지 않고 사용할 때마다 바뀔 수 있게 범용적이고 포괄적으로 지정한다 라는 의미 Object Class의 한계를 극복 호출되는 시점에 실제 Generic 타입을 지정 1. 왜 Generic가 만들어졌을까? List list = new ArrayList() 에서 List처럼 호출되는 시점에 실제 Generic 타입을 지정한다. 2. Generic Class Class or Interface로 정의할 수 있음 클래스 내부에서 사용하는 데이터의 타입(Type)을 클래스의 인스턴스를 생성할 때 결정하는 것. 기본 데이터 타입(int, ..

클래스 상속은 객체 지향 프로그램에서 가장 기본적인 문법 요소로 부모 클래스를 성질을 자식 클래스가 포함시키는 문법 요소로 객체(사물)의 공통 적인 성질(특성)을 모아서 클래스를 만들고 독립적인 성질을 각각 클래스로 만들면 이때 공통적인 성질을 부모 클래스라 하고 개별 클래스를 자식 클래스라 한다. 상속은 코드 중복 제거와 다형성을 위함이다. 중복되는 속성(상태)과 행동을 별도로 관리하여 중복 코드를 제거한다. - 이름, 나이, 몸무게, 키, 먹기, 잠자기 학생은 사람이다, 직장인은 사람이다. 직장인은 성인이다. 일반인도 성인이다.처럼 다양한 표현을 할 수 있는 것을 다양성이라 한다. 1. Extends ( Class 상속 ) class 자식클래스 extends 부모클래스 { …. } 다중 상속 -> 자..