BackEnd/Java

[Java] 객체지향 프로그래밍(Object-Oriented Programming, OOP)

ryuneng 2025. 1. 15. 00:06
반응형

# 목적

: 객체지향 프로그래밍(Object-Oriented Programming, OOP)에 대한 이해



객체지향 프로그래밍(OOP)이란?

  • 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, ‘객체’들의 상호작용(메시지 주고받기, 데이터 처리 등)으로 프로그램 로직을 구성하는 프로그래밍 패러다임
  • OOP의 핵심 개념
    1. 캡슐화(Encapsulation)
    2. 상속(Inheritance)
    3. 추상화(Abstraction)
    4. 다형성(Polymorphism)


객체(Object)란?

: 사전적인 정의로는, 실제로 존재하는 것. 사물 또는 개념
객체 지향 프로그래밍(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의 채널을 낮추는 기능을 하는 메서드	




클래스 간의 관계

1. is a

- A is a B = A는 B다
- 상속관계 / 구현관계

2. has a

- A has a B = A가 B를 포함한다
- 포함관계 / 의존관계
* 가장 일반적인 객체 간의 관계




상속과 구현

* 상속(extends)

  • 자식클래스를 빠르게 구현하기 위해서 사용
  • 유지보수성, 코드 재사용성이 높아짐

* 구현(implements)

  • 사용방법이 동일한 구현클래스를 제작하기 위해서 사용
  • 추후 변경될 가능성이 있는, 교체 가능해야 하는 것들은 구현해야 함



* 참고 : 유튜브 [자바의 정석 기초]


 


< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >

🔗 velog 버전 보기 : https://velog.io/@ryuneng2/Java-객체지향-OOP-기초정리