객체지향프로그래밍 ( Object Oriented Programming ) 이란 ?
먼저 OOP를 이해하기 위해선 절차지향적 프로그래밍에 대해 알아야하는데요,
절차 지향 프로그래밍 ( PP : Procedural Programming )에 대해 설명하자면,
순차적인 처리를 중요시하며, 프로그램 전체가 유기적으로 연결되어 있습니다.
그렇기 때문에 프로그램을 이해하기 어렵고 유지보수가 어렵다는 등의 단점이 있지만 속도가 빠르다는 장점이 있습니다.
OOP는 위와 같은 절차지향적 프로그래밍의 단점을 보완하기 위해서 만들어졌습니다.
객체란 "실제로 존재하는 것"으로 우리가 주변에서 볼 수 있는 책상, 의자, 컴퓨터와 같은 사물들을 곧 객체라고 할 수 있습니다.
이처럼, 객체지향프로그래밍 ( OOP )은 현실 세계에서 실제로 존재하는 것들을 객체로 보고, 그 객체들을 조립해 프로그래밍 하는 기법으로,
코드의 재사용이 가능하고 ( 확장과 유지보수에 용이 ), 콛ㅇ이 절차지향보다 간편하며 디버깅이 쉽다는 장점을 갖고 있습니다.
하지만 단점으로는 절차지향 프로그래밍보다 느린 속도와 높은 난이도가 있습니다.
OOP의 4가지 원칙
캡슐화 (Encapsulation)
하나의 객체에 대해 그 객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는 것을 의미합니다.
또한 외부에 노출할 필요가 없는 정보들을 은닉합니다. (정보은닉).
캡슐화는 클래스를 만들 때 객체가 특정한 목적을 가지고 있어야하고, 그 변수를 실행할 메서드 또는 함수를 관련성 있게 클래스에 구성해야합니다.
정보은닉은 pubilc, private와 같은 접근제어자를 통해 접근가능 범위를 조절 하는 것입니다.
변수를 private로 선언하게 되면 해당 변수에 접근할 수 없어 보호할 수 있습니다.
이렇게 보호된 변수는 getter나 setter등의 메서드를 통해서만 간접적으로 접근이 가능하도록 하는 것이 바로 캡슐화의 중요한 목적입니다.
접근 제어자에 대한 내용은 아래 포스팅을 통해 알아 볼 수 있습니다.
추상화 (Abstraction)
객체의 공통된 속성들 중 필요한 부분을 찾아서 추상 클래스로 정의하는 설계 기법입니다.
추상 클래스에 대한 내용은 아래 포스팅을 통해 알아 볼 수 있습니다.
다형성(Polymorphism)
상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해줍니다.
( 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력 )
즉, 같은 형태이지만 다른 기능을 하는 것입니다.
자바의 오버로드(Overload) 또는 오버라이딩(Overriding)이 다형성의 대표적인 예라 할 수 있습니다.
다형성에 대해 더욱 자세한 내용은 아래 포스팅을 통해 알아볼 수 있습니다.
상속(Inheritance)
상위 클래스의 모든걸 하위 클래스가 모두 이어 받는 것으로, 상위 클래스를 부모 클래스, 하위 클래스를 자식 클래스라고 합니다.
자식 클래스는 부모 클래스로 부터 생산자를 제외한 모든 멤버를 얻게 됩니다.
상속에 대한 내용은 아래 포스팅을 통해 알아볼 수 있습니다.
참고자료
https://theheydaze.tistory.com/603
https://limkydev.tistory.com/30
'◼ CS 기초 지식 > [개발상식]' 카테고리의 다른 글
MVC 디자인 패턴이란? (0) | 2022.11.08 |
---|---|
[Java/자바] 인터페이스(interface)란 ? (0) | 2022.10.25 |
TDD ( 테스트 주도 개발 ) 란 ? (0) | 2022.10.06 |
Git(깃)과 Github(깃허브)의 차이점에 대해 알아보자. (1) | 2022.09.30 |
동기와 비동기의 개념 및 차이에 대해 쉽게 알아보자. (1) | 2022.09.30 |