목록분류 전체보기 (248)
S E P H ' S

생성(Creational) 패턴 생성 패턴은 인스턴스를 만드는 절차를 추상화하는 패턴이다. 생성 패턴에 속하는 패턴들은 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리한다. 생성 패턴은 시스템이 상속(Inheritance)보다 복합(composite)방법을 사용하는 방향으로 진화되어 가면서 더욱 중요해지고 있다. 생성 패턴에는 두 가지 중요한 이슈가 있다. 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화 한다. 생성 패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 결합하는지에 대한 부분을 완전히 가려준다. 요약하면, 생성 패턴을 이용하여 무엇이 생성되고, 누가 이것을 생성하고, 어떻게 생성되는지 언제 생성할 것인지 결정하는 것에 대한 유연성..

디자인 패턴은 객체지향적 프로그래밍을 위한 설계 기법 중 하나이다. '객체지향적'으로 프로그램을 설계한다는 것은 쉬운 일이 아니다. 지금 당장 요구되는 문제를 해결하면서 추후에 발생할 수 있는 문제나 추가적인 요구사항이 생겼을 때 유연하게 수용하고 변경할 수 있도록 설계되어야 하기 때문이다. 이를 고려하기 위해 SOLID 원칙이나 여러 객체지향적 소프트웨어 설계 방법론을 바탕으로 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인지 정의해놓은 일종의 솔루션이 바로 디자인 패턴이다. 재사용이 가능한 설계는 선택하고, 재사용을 방해하는 설계는 배제하도록 도우며 이미 만든 시스템의 유지보수나 문서화도 개선할 수 있으며 클래스의 명세도 정확히 하고, 객체 간 상호작용 또는 설계 의도까지 명확히 ..

사실 이 포스팅의 내용은 Java 뿐만이 아닌 거의 모든 프로그래밍 언어가 메모리를 사용하는 방식이라고 봐도 무방하다. 이후 지속적으로 포스팅할 Java의 메모리 사용 방식에 대해 정리하기 전에 다루는 포스팅이라고 생각하고 정리해볼 것이다. 지역 변수와 메모리 변수는 스태틱 영역, 스택 영역, 힙 영역 세군데 모두에 존재한다. 하지만 각기 다른 목적을 가진다. 그래서 지역 변수, 클래스 멤버 변수, 객체 멤버 변수로 다르다. 지역 변수 : 스택 영역에 존재. 스택 프레임이 사라지면 마찬가지로 사라진다. 클래스 멤버 변수 : 스태틱 영역에 존재. 스태틱 영역에 한 번 자리 잡으면 JVM이 종료될때 까지 고정(static)된 상태로 존재. 객체 멤버 변수 : 힙 영역에 존재. 객체 멤버 변수들은 객체와 함께..

자바 프로그램의 실행 C나 다른 언어의 실행 방식과 Java 실행 방식을 비교한 간단한 그림이다. JDK가 운영체제에 맞게 존재하고 그 안에 자바 컴파일러(javac.exe)가 자바 코드를 해석하면 바이트 코드(.class 형태의 파일)가 되고 그를 JRE이 지니고 있는 자바 프로그램 실행기(java.exe)를 포함하고 있고 JVM이 중재자로서 각 플랫폼에서 프로그램을 구동하는 데 문제 없게끔 만들어준다. 자바 프로그램의 메모리 사용 방식 프로그램이 실행될때 메모리는 보통 다음과 같이 영역이 나눠서 사용된다. 자바와 같이 객체 지향 프로그램에서는 데이터 저장 영역을 다시 세 개의 영역으로 분할해서 사용한다. 위의 그림을 다시 더 상세한 설명을 덧붙인다면 스태틱 영역은 클래스가 위치하고 스택 영역은 메소드..