: 객체지향 프로그래밍(Object-Oriented Programming, OOP)에 대한 이해
컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, ‘객체’들의 상호작용(메시지 주고받기, 데이터 처리 등)으로 프로그램 로직을 구성하는 프로그래밍 패러다임
OOP의 핵심 개념
1. 캡슐화(Encapsulation)
2. 상속(Inheritance)
3. 추상화(Abstraction)
4. 다형성(Polymorphism)
: 사전적인 정의로는, 실제로 존재하는 것. 사물 또는 개념
객체 지향 프로그래밍(OOP)에서의 객체란, 클래스가 실제로 구현된 인스턴스 .
즉, 클래스를 인스턴스화한 것
(쉽게 말하자면, 객체 = instance 변수 묶음)
: 객체가 가지고 있는 기능과 속성에 따라 다름
클래스 | 객체(인스턴스) | 참조변수 |
---|---|---|
제품 설계도 | 제품 | |
TV 설계도 | TV | 리모컨 |
: 객체 = 속성(변수) + 기능(메서드)
속성 | 기능 |
---|---|
변수(field) | 메서드(method) |
크기, 길이, 높이, 색상, 볼륨, 채널 등 | 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널 변경 등 |
ex) int volume; | ex) void volumeUp() { volume++; } |
1. 클래스(설계도) 작성 (객체를 생성하기 위해)
ex) class Tv 클래스에 설계도 작성
2. 객체(제품) 생성 (객체를 사용하기 위해)
ex) class TvUsing의 main메서드에서 Tv t = new Tv(); 객체생성
3. 객체(제품) 사용 (객체가 가진 속성과 기능을 사용하기 위해)
ex) class TvUsing의 main메서드에서 t.channel = 7; || t.channelDown(); 등으로 사용
public class TvUsing {
public static void main(String[] args) {
// ------ 2. 객체 생성 ------
// (1) Tv클래스 타입의 '참조변수 t(리모컨)'를 선언
// (2) Tv인스턴스를 생성 (3) 생성된 Tv인스턴스의 주소를 대입 연산자를 통해 t에 저장
Tv t = new Tv(); // (1) Tv t; (3),(2) t = new Tv(); 를 한 문장으로
// 클래스명 변수명 = new 클래스명();
// ------ 3. 객체 사용 ------
t.channel = 7; // Tv인스턴스의 멤버변수 channel의 값을 7로 저장 (변수 사용) // 값 : 7
t.channelDown(); // Tv인스턴스의 메서드 channelDown()을 호출 (메서드 사용) // 값 : -1 (channelDown() : --channel)
System.out.println("현재 채널은 " + t.channel + " 입니다."); // t.channel 값 : 6
}
}
// ------ 1. 클래스 작성 ------
class Tv {
// Tv의 속성(멤버변수)
String color; // 색상
boolean power; // 전원상태(on/off)
int channel; // 채널
// Tv의 기능(메서드)
void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() { ++channel; } // TV의 채널을 높이는 기능을 하는 메서드
void channelDown() { --channel; } // TV의 채널을 낮추는 기능을 하는 메서드
- A is a B = A는 B다
- 상속관계 / 구현관계
- A has a B = A가 B를 포함한다
- 포함관계 / 의존관계
* 가장 일반적인 객체 간의 관계
* 참고 : 유튜브 [자바의 정석 기초]