본문 바로가기
프로그래밍 언어/JAVA

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

by 검은도자기 2021. 6. 22.

OOP 란?

Object Oriented Programing의 줄임말이며, 현실세계의 일부분을 객체로 만들어서 프로그래밍하는 방법

 

 

클래스란?

현실세계에 존재하는 물체에 대한 다양한 특징과 기능을 가진 설계도

 

 

객체란?

'설계도(클래스)를 실체화한 것'입니다.

- 인스턴스화: 클래스로부터 객체를 만드는 과정

- 인스턴스: 만들어진 객체를 그 클래스의 인스턴스

 

 

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

1. 캡슐화 (Encapsulation)

- 변수와 메서드를 하나의 단위로 묶어서 클래스로 만드는 것

- 외부에 노출할 필요가 없는 정보들은 은닉 (정보은닉)

 

세부 구현을 숨기는 목적은 클래스 내부 구현의 응집도(cohesion)를 높이고 외부 다른 클래스와의 결합도(coupling)을 낮추는 데 있습니다.

 

 

2. 상속 (Inheritance)

- 부모 클래스가 가진 속성과 기능을 자식 클래스에게 공유하는 것

 

 

3. 다형성 (Polymorphism)

- 같은 모양을 다양하게 만드는 특성

- 다형성의 방식으로 오버 라이딩(Overriding)과 오버 로딩(Overloading)이 존재함

 

 

4. 추상화 (Abstract)

대상의 특성 중 불필요한 부분을 제거하여 필요한 부분만 표현하기 위한 개념

 

 

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

- 코드 중복 감소

- 코드의 재사용성

- 쉬운 유지 보수

 

 

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

- 설계 시 많은 시간 및 노력이 필요

- 객체가 많으면 용량이 커져서 처리속도가 상대적으로 느려짐

 

 

마무리

이전에 공부한 객체 지향 개념을 정리하면서 다시 공부를 해봤습니다.

정리하기 전 내용들을 보니 이해가 안 된 상태에서 정리한 게 보였습니다. 이를 통해 느낀 점은 같은 걸 보더라도 시간이 지난 후 다른 부분들이 보일 수도 있으니 가끔씩 이전 개념들을 다시 확인해보는 시간도 중요한 거 같다고 느꼈습니다.

아직 부족하거나 틀린 부분이 있을 수도 있으니 주의하시면 좋을 거 같습니다.

이번 포스팅은 마무리하면서 다음 포스팅에서 뵙겠습니다.

 

 

참고)

https://en.wikipedia.org/wiki/Object-oriented_programming

https://namu.wiki/w/%EA% B0% 9D% EC% B2% B4%20% EC% A7%80% ED%96% A5%20% ED%94%84% EB% A1% 9C% EA% B7% B8% EB% 9E%98% EB% B0%8D

https://hokeydokey.tistory.com/109

https://hangem-study.readthedocs.io/en/latest/front_interview/oop/

https://byul91oh.tistory.com/7

https://scorpio-20190525.tistory.com/50

https://gracefulprograming.tistory.com/130