본문 바로가기
Java

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

by sgyeong 2025. 12. 17.

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

복잡한 프로그램을 현실 세계의 사물(객체)처럼 조립해서 만드는 방식

 

객체지향의 특징

 

상속 (Inheritance)

기존의 부모 클래스를 재사용하여 새로운 자식 클래스를 만드는 것. 

자식 클래스는 부모 클래스의 기능을 물려받으면서 자신만의 기능을 추가할 수 있어 코드의 재사용성이 용이하다.

 

다형성 (Polymorphism)

하나의 객체가 여러가지 형태를 가질 수 있는 성질. 

 

캡슐화 (Encapsulation)

데이터와 그 데이터를 처리하는 함수를 하나로 묶는 것. 

외부에서 내부 데이터에 직접 접근하지 못하게 제한하여 정보를 은닉하고, 코드의 독립성을 높인다.

 

추상화 (Abstraction)

복잡한 내부 로직은 숨기고, 사용자에게 필요한 핵심적인 기능만을 인터페이스로 구축하는 것.

- 오버라이딩 (Overriding) : 상속 또는 인터페이스 구현 시, 이미 정의된 메서드를 재정의해서 사용하는 것.

- 오버로딩 (Overloading) : 한 클래스 안에서 동일한 이름의 메서드를 여러 개 정의하는 것. 이름은 같지만 매개변수의 타입이나 개수를 다르게 한다. 

 

 

객체지향의 장점과 단점

장점

1) 코드의 재사용성 : 상속을 통해 이미 만든 코드를 쉽게 다시 쓸 수 있다.

2) 유지보수의 용이 : 수정이 필요한 부분만 고치면 되므로 관리가 편하다.

3) 가독성이 좋고 이해하기 쉽다.

 

단점

절차지향 프로그래밍에 비해 설계 단계에서 시간이 많이 소요되며, 실행속도가 상대적으로 느릴 수 있다.

 

 

 

객체지향의 5대 원칙 (SOLID)

- 단일 책임의 원칙

한 클래스는 하나의 책임만 가져야 한다.

 

- 개방 폐쇄의 원칙

확장에는 열려있어야 하고, 변경에는 닫혀있어야 한다.

기존 코드는 변경하지 않으면서 새로운 기능을 추가할 수 있도록 설계해야 한다. 주로 인터페이스나 추상클래스를 통해 다형성을 활용하여 구현한다.

 

- 리스코프 치환 원칙

자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다.

상속 관계가 논리적으로 결함이 없어야 한다.

 

- 인터페이스 분리의 원칙

사용하지 않는 메서드에 의존하도록 강제해서는 안 된다. 

 

- 의존 역전 원칙

상위 모듈은 하위 모듈에 의존해서는 안 되며, 둘 다 추상화에 의존해야 한다.

 

 

 

 

 

 

 

 

참고

https://runa-nam.tistory.com/106

 

[OOP] 객체지향 프로그래밍

1. OOP란? OOP란 객체지향 프로그래밍 (Object Oriented Programming)의 약자로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 취급하여 프로그램에 반영하고, 순차적으로 프로

runa-nam.tistory.com