본문 바로가기

Singlton pattern Singlton -pattern2016년 3월 23일Posted in Design Pattern, 자바, Singleton.편집클래스의 인스턴스가 단 하나만 필요 한 경우 사용한다.– 지정한 클래스의 인스턴스가 절대로 1개밖에 존재하지 않는 것을 보증하고 싶을때– 인스턴스가 1개밖에 존재하지 않는 것을 프로그램 상에서 표현하고 싶을때요소를 1개 밖에 가지고 있지 않은 집합을 의미Singleton 클래스singleton은 static 필드로서 Singleton 클래스의 인스턴스에서 초기화된다.Singleton 클래스의 생성자는 private 로 되어있다.이것은 Singleton 클래스 외부에서 생성자의 호출을 금지하기 위해서이다.만약 new Singleton() 이라는 식이 클래스 외부에 있더라ㄱ도 컴파일.. 더보기
template pattern template pattern2016년 3월 9일Posted in Design Pattern, 자바, Template.편집template pattern 추상 클래스를 선언한우 기능의 구현은 상속받은 하위 클래스가 한다.상위 추상클래스는 기능의 흐름을 결정하고 하위클래스는 구체적인 내용을 결정한다.상위 추상클래스를 상속받아 string,char을 출력하는 예제이다.AbstracDisplay.javapackage template;public abstract class AbstracDisplay {public abstract void open(); public abstract void print(); public abstract void close();public final void display(){ ope.. 더보기
Iterator Pattern Design Pattern – Iterator Pattern2016년 3월 3일Posted in Design Pattern, Iterator, 자바.편집공부하는책 – Java 언어로 배우는 디자인 패턴 입문 starUML로 하려니 인터페이스 모양이 이상해서 그냥 저렇게 했는데 점선이 잘못나왔음.Iterator 패턴은 반복문의 일반적인 i의 기능을 추상화해서 일반화 한것이라고 생각하면됨.iterator 의미자체가 ‘반복한다’,’반복자’의미를 가진다UML은 서가(BookShelf)안에 책(Book)를 넣고 책의 이름을 차례대로 표시하는 예제Aggregate는 집합체를 의미Book클래스는 책이름을 받고 getName()으로 얻는것 뿐이기 때문에 생략…package Itertator;import java.uti.. 더보기
Factory pattern Factory 패턴2016년 3월 10일Posted in Design Pattern, Factory, 자바.편집팩토리 메소드 패턴은 인스턴스를 만드는 방법을 상위클래스 측에서 결정.하위클래스에서 구체적인 처리의 내용 하위 클래스에서 구현.예제는 다섯개의 클래스로 구성frame pakage;– Product class : 추상 메소드 use 만 정의된 추상클래스– Factory class : 메소드 create 을 구현하는 추상 클래스idcard pakage– IDCard class : 메소드 use를 구현– IDCardFactory class : 메소드 createProduct, registerProduct 를 구현하고 있는 클래스Anonymous pakage– Main class : 동작 테스트 클래스.. 더보기
Adapter Pattern Adapter Pattern2016년 3월 5일Posted in Adapter, Design Pattern, 자바.편집이미 제공되어 있는 것 과 필요한 것 의 차이를 없애주는 디자인 패턴 Wrapper 패턴이라고도 불리운다. 클래스에 의한 Adapter 패턴(상속을 사용한 Adapter 패턴) 인스턴스에 의한 Adapter 패턴(위임을 사용한 Adapter 패턴) *대응관계제공되고 있는것 – 교류 100볼트 – Banner 클래스 (showWithParen, showWithAster)교환장치 – 어댑터 – PrintBanner 클래스필요한것 – 직류12볼트 – Print 인터페이스 (printWeak, printStrong) 상속을 사용한 Adapter 패턴Banner.javapackage Adapter.. 더보기
스택과 힙 메모리 프로그램을 구동하게 되면 해당 프로그램은 메모리 영역에 올라가게 됩니다. 이렇게 메모리 영역에 올라가 있는 코드나 데이터들을 CPU에서 필요한 명령어나 데이터를 읽어가서 프로그램이 실행되게 되는데요.크게 4가지로 구분되어 메모리에 올라가게 됩니다. 1. 코드 영역 (Code Segment)– 실제 프로그램 코드 자체가 적재되는 영역을 말합니다. C나 JAVA등의 개발 언어로 짜여진 프로그램은 컴퓨터가 이해할 수 있는 기계어의 형태로 컴파일 되어 파일 등에 저장되는데, 실제 이 파일의 프로그램에 대한 전체적인 코드 자체가 올라가는 영역입니다.– 프로그램 자체 영역으로 보시면 됩니다. 2. 데이터 영역 (Data Segment)– 프로그램이 실행되면서 필요한 변수가 저장되는 영역인데, 이 데이터 영역은 프로.. 더보기
정적메소드와 인스턴스 정적 메소드는 this 레퍼런스가 없다(인스턴스 메소드는 각각의 인스턴스마다 메모리를 할당하여 어떤 객체에서 불러왔는지 구분할 필요가 있기때문에 this가 필요하고 정적 메소드는 클래스로 선언된 모든객체에 의해 공유되기때문에 객체를 구분할 필요가없음 )– 정적 메소드는 오버라이딩이 불가하다.– 정적메소드는 인스턴스 멤버를 호출할 수 없다. 메모리 할당 순서는클래스가 메모리 할당 -> 정적 멤버변수 -> main 메소드-> 객체 생성후 -> 인스턴스 멤버 변수api 중에서 Math 라는 클래스는 수학관련된 정적 메소드로 정의 되어있음 왜냐면 매번 인스턴스를 생성하는 것이 번거롭기 때문에 클래스로 바로 접근해서 속성이나 메소드를 사용하는 것이 메모리를 보다 효율적으로 사용할수 있는 방법이라서 ~ 더보기
패키지 - Pakege 동일한 클래스를 패키지로 구분하기 위함패키지 네임은 – 회사 _인터넷_주소.패키지_이름_클래스_이름 이런식으로 더보기
메소드 오버라이딩 상속 – 슈퍼클래스, 서브클래스protected – 상속관계나 같은 패키지 내 접근가능레퍼런스 변수super – 부모 메소드나 변수를 부를때은닉변수 – 메소드 오버라이딩을하면 부모 메소드는 은닉상속에서의 생성자 – 생성자는 상속되지 않는다. 명시하지 않아도 자동 호출 서브클래스의 인스턴스가 생성되려면 슈퍼클래스의 멤버변수를 포함한 인스턴스도 생성된다. 생성자 생성자는 상속되지않는 유일한 멤버함수이다. 서브클래스의 인스턴스가 생성될 때 자신의 생성자가 호출되면서 슈퍼 클래스의 생성자를 연속적으로 자동호출한다.슈퍼 클래스 생성자가 먼저 실행되고 서브클래스의 생성자가 실행된다.\생성자 문제슈퍼클래스에서 전달인자를 갖는 생성자만 정의해 놓으면 전달인자를 갖지 않는 디폴트 생성자를 더 이상 ㅍ컴파일러가 제공하지 .. 더보기
업캐스팅과 다운캐스팅 레퍼런스형 변수 자식은 부모가 될수있다 – 업캐스팅부모는 자식이 될수 없으므로 강제적으로 형변환 해줘야함Parent p = new Child(); // 업캐스팅을 한후Child c =(Child)p // 다운캐스팅을 해야한다.이를 다운캐스팅이라한다.참고로 레퍼런스 변수들 사이의 형변환은 상속관계에서만 가능하다.다운캐스팅 서브클래스로 형변환하는 것이다.참조 가능한 영역이 확대된다. 컴파일러에 의해서 자동으로 형변환되지 않는다. 명시적으로 캐스팅을 해주어야한다. 실행시 예외사항이 발생할 수있으므로 인스턴스의 클래스 형과 참조하는 레퍼런스 변수의 상속 관계를 생각해서 명시적 캐스팅을 해야한다. (이전에 이미 업캐스팅이 된 레퍼런스 값을 다운캐스팅 하는 경우에만 안전하다.) 더보기