
디자인 패턴 : 싱글톤 패턴 / 템플릿 메서드 패턴 싱글톤 패턴객체가 단 하나일 때 존재하는 것 1. 생성자를 private으로 만든다.2. static 변수를 활용해서 내부에서 객체를 생성하고 주소값을 할당3. 외부에서 유일하게 참조할 수 있는 public 메서드를 제공한다. 템플릿 메서드 패턴추상 메서드나 구현된 메서드를 활용하여 코드의 흐름(시나리오)를 정의하는 패턴을 말한다. Car aicar = new AICar(); 에 대해 알아보자1. class Car 의 startCar가 먼저 출력됨.2. class Car 의 drive(), stop()은 abstract (추상 클래스) 임.=> Car 상속을 받은 AICar에서 drive(), stop() 메서드를 재정의하여, Car 의..

인터페이스두 객체를 연결하는 역할 객체 A는 인터페이스의 메서드만 사용하므로 객체 B가 객체 C로 변경된 것에 관심이 없다.만약 인터페이스 없이 객체 A가 객체 B를 직접 사용한다면, 객체 A의 소스 코드를 객체 B에서 객체 C로 변경하는 작업이 추가로 필요하다.객체 A 가 인터페이스의 메서드를 호출하면 실제로 실행되는 것은 인터페이스 뒤편의 객체 B 또는 객체 C 의 메서드다.만약 객체 B의 메서드 실행 결과와 객체 C의 메서드 실행 결과가 다르다면, 객체 A는 객체 교체로 인해 다른 결과를 얻게 된다.모든 메서드가 추상 메서드로 선언됨 모든 변수는 상수로 선언됨 그 외 멤버 선언 종류public final 필드public abstract() 메서드public default() 메서드public sta..

추상 클래스완전하게 구현되어 있지 않은 하나 이상의 추상 메서드를 가지고 있거나 abstract 키워드를 가지고 있는 클래스이다.메소드가 미완성이라 추상 클래스는 직접적으로 new 키워드로 객체를 생성할 수 없다.상속 계층에서 추상적인 개념을 나타내기 위한 용도로 사용된다.추상 클래스를 상속받는 자식 클래스에서는 반드시 추상 메서드를 재정의해야 한다. 그렇지 않으면 오류가 발생한다. 추상 클래스를 상속한 경우 해결방법 2가지1. 자식 클래스를 추상 클래스로 만들어 버린다.2. 추상 메서드를 오버라이드 해서 구현 메서드로 재정의한다. 추상 메서드란? int add(int x, int y); // 선언 int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님 예시) en..

다형성 하나의 데이터 타입이 다양한 형태로 바라볼 수 있는 것(하나의 코드가 여러 자료형으로 구현되어 실행되는 것)한 요소(메서드, 클래스 등)가 여러 형태를 가질 수 있는 능력상속, 추상화, 인터페이스와 함께 사용됨.같은 코드에서 여러 다른 실행 결과가 나옴정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나임다형성을 잘 활용하면 유연하고 확장성 있고, 재사용성을 높여주며 유지보수가 편리한 프로그램을 만들 수 있음 다형성 활용 시 사용되는 개념: 업캐스팅(자동 타입 변환)과 다운캐스팅(강제 타입 변환)업캐스팅부모 클래스의 참조 변수로 자식 클래스의 객체를 참조하는 것부모 클래스의 데이터 타입으로 자식 클래스의 객체를 대입하는 것업캐스팅은 자동으로 이루어짐.(자동 타입 변환)부모..

상속처럼 클래스를 재사용할 수 있는 방법한 클래스가 다른 클래스를 포함하는 관계(하나의 객체가 다른 객체 없이는 의미가 없을 때 사용) 한 클래스가 다른 클래스를 자신의 필드(멤버변수)로서 포함하는 것( = 클래스의 멤버로 다른 클래스 자료형의 참조 변수를 선언하는 것)has-a 관계로 알려져 있으며 객체 간의 강한 연관성을 나타냄포함관계 특징포함된 객체는 포함하는 객체 안에서만 존재하며, 포함하는 객체가 파괴되면 포함된 객체도 함께 파괴됨.이 관계는 객체 간의 강한 의존성을 특징으로 하며, 소유하는 객체가 완전한 책임을 가짐.포함관계는 연관관계보다 더 강한 연결을 의미함. 자동차와 엔진, 컴퓨터와 CPU를 예시로 들 수 있음 예시Engine 클래스 생성public class Engine { Str..
자료구조데이터를 어떻게 조직화하고 저장하며 접근할지 결정하는 방법자료구조의 특징효율성: 데이터를 효율적으로 저장, 검색, 삽입, 삭제할 수 있어야 함.추상화: 데이터의 논리적인 구조와 물리적인 구현을 분리하여 추상적으로 정의해야 함.재사용성: 여러 응용 프로그램에서 재사용할 수 있도록 일반적이고 유연한 구조여야 함.자주 사용되는 자료 구조: 배열, List, Map, Set, 스택, 큐, 트리 등 배열연관된 데이터를 모아서 통으로 관리하기 위해서 사용하는 데이터 타입 배열의 특징동일한 자료형의 순차적 자료 구조인덱스 연산자 [ ] 를 이용하여 빠른 참조 가능물리적 위치와 논리적 위치 동일배열의 순서는 0부터 사작(인덱스라고 함)자바에서 객체 배열을 구현한..
this객체 내부에서는 인스턴스 멤버(필드, 메소드)에 접근하기 위해 사용함.생성자와 메소드의 매개변수명이 인스턴스 멤버인 필드명과 동일한 경우, 인스턴스 필드임을 강조하고자 할때 사용함.this의 3가지 사용방법1. this 는 자기 자신을 가리킨다.(인스턴스의 주소)2. 생성자에 다른 생성자를 호출할 때 사용할 수 있다.3. 자신의 주소(참조값, 주소값)를 반환시킬 수 있다. this. 및 this()를 활용하자.public class Person { private String name; // 변수 + 데이터 타입 + 멤버변수 private int age; private String phone; private String gender; // 생성자 publi..
객체를 생성할 때 호출죄는 특별한 유형의 메서드 객체가 올바르게 사용될 수 있도록 필요한 값들을 설정하고, 필요한 초기화 코드를 실행함. 생성자의 특징 객체 생성 시 반드시 존재해야 함. 생성자의 이름은 클래스의 이름과 동일해야함. 생성자는 반환 타입을 가지지 않으며, 심지어 void 도 사용하지 않음. 객체 생성 시 new 키워드와 함께 자동으로 호출됨. 생성자는 기본 생성자와 사용자 정의 생성자로 구분할 수 있음. 예시) Student라는 class 파일 public class Student { // Student.java의 public void showInfo() {} 메소드를 호출함. // 학생이 버스를 탄다 s1.takeBus(bus2); // -> takeBus에 ctrl + 우측 마우스 클릭..