Java 109

[객체지향][자바의 정석] - 5. 변수의 초기화 멤버변수의 초기화

6.5 변수의 초기화 1. 변수의 초기화 - 지역변수(lv)는 수동초기화를 해주어야 한다(사용전에 꼭 해줘야 함) - 인스턴스 변수 클래스 변수와 같은 멤버변수는 자동초기화 된다. class InitTest{ // 인스턴스 변수로 x 초기화 없이도 y에 대입 가능(멤버변수 cv,iv는 자동초기화가 되어있기 때문) int x; int y = x; void method1(){ //지역 변수의 경우엔 수동으로 초기화해주어 사용해야 한다. // 그 이유는 지역 변수는 메소드 내에서만 사용되고 사라지기 때문에 // 메모리 효율성을 위해서 필요할 때 초기화해서 사용하는 것이 효율적이기 때문 int i; int j = i; //에러 발생부분 -> 지역변수 i를 초기화하지 않고 사용했기 때문이다. } } 멤버변수의 초..

Java/객체지향 2021.11.02

[객체지향][자바의 정석] - 6.4 생성자

6.4 생성자 construct 생성자(영어: constructor, 혹은 약자로 ctor)는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 필요에 따라 자원을 할당하기도 한다. 객체의 생성 시에 호출되기 때문에 생성자라는 이름이 붙었다. 생성자는 대체로 멤버 함수와 같은 모양을 하고 있지만, 값을 반환하지 않는다는 점에서 엄밀한 의미의 함수는 아니다. 📌출처: https://ko.wikipedia.org/wiki/%EC%83%9D%EC%84%B1%EC%9E%90 4.1 생성자 4.2 기본 생성자 # Data_1의 경우엔 생성자가 1개도 없기 때문에 기본생성자가 들어가서 오류가 나지 않는다. # Data_2의 경우..

Java/객체지향 2021.11.01

고급객체지향 프로그래밍 - 싱글턴 패턴(Singleton Pattern), 반복자 패턴(Iterator Pattern)

싱글턴 패턴(Singleton Pattern) 싱글턴 패턴이란? 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다. 주로 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용된다. 싱글턴 패턴의 목적 - 클래스가 한 개의 인스턴스(객체)만을 만들 수 있도록하고, 어디서나 생성된 인스턴스에 접근할 수 있도록 하기 위함이다. 싱글턴 패턴의 요소 요소 설명 이름 싱글턴(Singleton) 문제 여러 객체가 생성되면 상태 관리가 어려움 해결 방..

고급객체지향 프로그래밍 - 팩토리 메소드 패턴(Factory Method Pattern)

팩토리 메소드 패턴(Factory Method Pattern) 팩토리메소드란? Factory method는 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며. 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다. 팩토리메소드의 목적 - 바뀌는 부분/ 바뀌지 않는 부분을 나누어서 바뀌는 부분을 추상 클래스로 만들어준다. - 관련된 팩토리 메소드 함수들이 여러개를 한 꺼번에 묶어 놓은 그런 클래스를 만들어 제공하는 것이 핵심이다. - 구체적인 클래스 명시 없이 관련된 혹은 의존적인 객체를 생성할 수 있는 인터페이스를 제공한다. 문제점 - 객체를 생성하는 new의 문제로 new는 인터페이..

고급객체지향 프로그래밍 - 데코레이터 패턴 (Decorator Pattern)

데코레이터 패턴 (Decorator Pattern) 데코레이터 패턴 (Decorator Pattern)이란? 기능을 조금씩 추가하기 위해서 새로운 클래스를 생성하는 경우에 너무 많은 상속 관계가 발생할 수 있기에 데코레이터 패턴은 상속을 하지 않고 새로운 기능을 추가할 수 있도록 해주는 패턴이다. 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 추가해준다. (서브 클래스를 만들지 않고 기능을 유연하게 확장할 수 있는 방법을 제공한다.) 데코레이터 패턴의 구성요소 요소 설명 이름 데코레이터(Decorator) 문제 조금씩 다른 다양한 종류, 늘어날수록 확장이 어렵다 해결 방안 상속을 남용하지 않고 연관으로 필요한 기능을 추가해준다. 실행시점 확장 Extension at runtime (not comp..

고급객체지향 프로그래밍 - 스윙 (Swing)

스윙 (Swing) 스윙이란? 자바에 기본으로 포함된 GUI 프로그래밍 라이브러리로 컴포넌트가 자바로 작성되어 있어서 크로스 플랫폼을 지원한다. 옵저버패턴과 함께 연관되어 있으니 같이 공부해야 한다. 메소드 설명(자주 사용되는 컴포넌트 클래스의 메소드) void add(Component c) - 컴포넌트에 주어진 컴포넌트 c를 추가 void setSize(int width, int height) - 컴포넌트의 너비와 높이 크기 지정 void setLayout(LayoutManager m) - 컴포넌트의 레이아웃 매니저 지정 void setVisible(boolean b) - 컴포넌트를 화면에 보일 것인지 지정. 디폴트는 false GUI 프로그래밍 절차 - 메인 윈도우 생성 -> 프로그램의 틀이 되는 윈..

고급객체지향 프로그래밍 - 옵서버 패턴 (Observer Pattern)

옵저버 패턴 (Observer Pattern) 옵저버 패턴 (Observer Pattern)이란? 옵저버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 📌출처: https://ko.wikipedia.org/wiki/%EC%98%B5%EC%84%9C%EB%B2%84_%ED%8C%A8%ED%84%B4 옵저버 패턴은 일종의 푸쉬 서비스를 구현한다. 예를 들어 설명하자면 뉴스레터와 구독자가 합쳐진 것이 옵저버 패턴이다. (발행자는 subject / 구독자는 observer) 요..

고급객체지향 프로그래밍 - 전략 패턴strategy pattern)

전략 패턴 (strategy pattern) 전략 패턴(strategy pattern)란? 전략 패턴(strategy pattern) 또는 정책 패턴(policy pattern)은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. 📌참조: https://ko.wikipedia.org/wiki/%EC%A0%84%EB%9E%B5_%ED%8C%A8%ED%84%B4 스트래지 패턴(strategy pattern) 서로 다른 알고리즘이 존재하고, 실행 중 적합한 알고리즘을 선택해서 적용한다. 클라이언트에 모든 알고리즘을 포함시키면 생기는 문제들. 클라이언트에 모든 알고리즘을 포함시키면 클라이언트 코드의 양이 늘어나고 복잡해지며 결과적으로는 유지 보수가 어려워지게 된다. 모든 알고리즘이 동..

[객체지향][자바의 정석] - 3. 메서드 오버로딩

6.3 메서드 오버로딩 3.1 메서드 오버로딩(method overloading)이란? 하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩, 간단히 오버로딩이라고 한다. 3.2 오버로딩의 조건 - 메서드의 이름이 같아야 한다. - 매개변수의 개수 또는 타입이 달라야 한다. (개수가 다르든지 타입이 다르든지) - 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립하지 않음. (즉, 리턴타입은 오버로딩 구현에 아무런 영향을 주지 못한다는 의미이다.) void println() void println(boolean x) void println(char x) void println(char[] x) void println(double x) void println(float x) vo..

Java/객체지향 2021.10.17