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://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
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
오버 로딩(Overloading)과 오버 라이딩(Overriding) (0) | 2021.07.03 |
---|---|
Call by Value와 Call by Reference 란? (0) | 2021.06.29 |
GC(Garbage Collector) 란? (0) | 2021.06.19 |
JVM(Java Virtual Mahcine)이란? (0) | 2021.06.15 |
[Java] 자바 설치 및 환경 설정하기 (0) | 2021.06.13 |