객체지향프로그래밍 (OOP)에 대해 알아보자.

객체지향프로그래밍 ( Object Oriented Programming ) 이란 ? 

먼저 OOP를 이해하기 위해선 절차지향적 프로그래밍에 대해 알아야하는데요,

 

절차 지향 프로그래밍 ( PP : Procedural Programming )에 대해 설명하자면,

순차적인 처리를 중요시하며, 프로그램 전체가 유기적으로 연결되어 있습니다.

그렇기 때문에 프로그램을 이해하기 어렵고 유지보수가 어렵다는 등의 단점이 있지만 속도가 빠르다는 장점이 있습니다.

 

OOP는 위와 같은 절차지향적 프로그래밍의 단점을 보완하기 위해서 만들어졌습니다.

 

객체란 "실제로 존재하는 것"으로 우리가 주변에서 볼 수 있는 책상, 의자, 컴퓨터와 같은 사물들을 곧 객체라고 할 수 있습니다.

 

이처럼, 객체지향프로그래밍 ( OOP )현실 세계에서 실제로 존재하는 것들을 객체로 보고, 그 객체들을 조립해 프로그래밍 하는 기법으로,

코드의 재사용이 가능하고 ( 확장과 유지보수에 용이 ), 콛ㅇ이 절차지향보다 간편하며 디버깅이 쉽다는 장점을 갖고 있습니다.

 하지만 단점으로는 절차지향 프로그래밍보다 느린 속도와 높은 난이도가 있습니다.

 


OOP의 4가지 원칙

 

캡슐화 (Encapsulation)

하나의 객체에 대해 그 객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는 것을 의미합니다.

또한 외부에 노출할 필요가 없는 정보들을 은닉합니다. (정보은닉).

 

캡슐화클래스를 만들 때 객체가 특정한 목적을 가지고 있어야하고, 그 변수를 실행할 메서드 또는 함수를 관련성 있게 클래스에 구성해야합니다.

 

정보은닉 pubilc, private와 같은 접근제어자를 통해 접근가능 범위를 조절 하는 것입니다.

변수를 private로 선언하게 되면 해당 변수에 접근할 수 없어 보호할 수 있습니다.

이렇게 보호된 변수는 getter나 setter등의 메서드를 통해서만 간접적으로 접근이 가능하도록 하는 것이 바로 캡슐화의 중요한 목적입니다.

 

접근 제어자에 대한 내용은 아래 포스팅을 통해 알아 볼 수 있습니다.

 

[Java/자바] 접근제어자(Access Modifier)란?

접근 제어자는 멤버 또는 클래스에 사용하여 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 합니다. 만약 멤버 또는 클래스 앞에 접근 제어자가 지정되어 있지 않

hstory0208.tistory.com

 

추상화 (Abstraction)

객체의 공통된 속성들 중 필요한 부분을 찾아서 추상 클래스로 정의하는 설계 기법입니다.
추상 클래스에 대한 내용은 아래 포스팅을 통해 알아 볼 수 있습니다.

 

[Java/자바] 추상 클래스와 추상 메서드란 (abstract)?

추상이란 ? 추상의 사전적 의미를 보면 "여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용." 입니다. "상속"이 자손 클래스를 만드는데 조상 클래스를 사용하

hstory0208.tistory.com

 

다형성(Polymorphism)

상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해줍니다.

( 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력 )

즉, 같은 형태이지만 다른 기능을 하는 것입니다.

자바의 오버로드(Overload) 또는 오버라이딩(Overriding) 다형성의 대표적인 예라 할 수 있습니다.

 

 

다형성에 대해 더욱 자세한 내용은 아래 포스팅을 통해 알아볼 수 있습니다.

 

[Java/자바] 다형성(polymorphism)이란 ?

다형성 다형성은 객체지향 언어인 자바의 아주 중요한 특징 중 하나입니다. 다형성은 상속과 깊은 관계를 가지고 있으므로 상속에 대해 알고 싶다면 아래 포스팅을 참고하시면 됩니다. [Java/자

hstory0208.tistory.com

 

상속(Inheritance)

상위 클래스의 모든걸 하위 클래스가 모두 이어 받는 것으로, 상위 클래스를 부모 클래스, 하위 클래스를 자식 클래스라고 합니다.

자식 클래스는 부모 클래스로 부터 생산자를 제외한 모든 멤버를 얻게 됩니다.

 

상속에 대한 내용은 아래 포스팅을 통해 알아볼 수 있습니다.

 

[Java/자바] 클래스의 관계 - 상속(is-a)과 포함(has-a)

상속 상속이란, 기존의 클래스를 재사용해 새로운 클래스를 작성하는 것입니다. 상속을 통해서 클래스를 작성하면, 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리

hstory0208.tistory.com

 


참고자료
https://theheydaze.tistory.com/603

https://limkydev.tistory.com/30