본문 바로가기
코딩/기초 지식

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

by 형큐 2022. 7. 21.
SMALL

1. OOP = Object-Oriented Programming = 객체 지향 프로그래밍

객체의 관점에서 프로그래밍 하는 것을 의미

C언어를 절차 지향 프로그래밍이라 하는데, 절차 지향 프로그래밍은 프로세스가 함수 단위로 순서대로 진행되는 것을 말한다.

반면 OOP는 객체들의 유기적인 관계를 통해서 프로세스가 진행된다.

즉, 애플리케이션을 구성하는 요소들을 객체로 바라보고, 객체들을 유기적으로 연결하여 프로그래밍 하는 것을 말한다.

2. OOP의 장점

  • 코드 재사용성 증가
    상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있다.
  • 생산성 향상
    잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있다.
  • 자연적인 모델링
    우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.
  • 유지보수의 우수성
    프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적이라할 수 있다.

3. OOP의 단점

  • 개발속도가 느린점
    객체가 처리하려는 것에 대한 정확한 이해가 필요하기에 설계단계부터 많은 시간이 소모 된다.
  • 실행속도가 느린점
    객체지향언어는 대체적으로 실행속도가 느리다.
  • 코딩 난이도 상승
    다중 상속이 지원되는 C++ 같은 경우에 너무 복잡해져 코딩의 난이도가 상승할 수 있다.

4. OOP 특징

1) 캡슐화 (Encapsulation)

  • 데이터와 코드의 형태를 외부로부터 알 수 없게하고, 데이터와 구조의 역할, 기능을 하나의 캡슐형태로 만드는 방법.
  • 중요한 목적은 변수를 private로 선언하여 데이터를 보호하고, 보호된 변수는 getter나 setter등의 메서드를 통해서만 간접적으로 접근을 허용하는 것.
  • 불필요한 정보를 감출 수 있기 때문에, 정보은닉을 할 수 있다. (단, 캡슐화 ≠ 정보은닉)

2) 추상화 (Abstraction)

  • 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념
  • 객체의 공통적인 속성과 기능을 추출하여 정의하는 것.
  • 즉, 추상화는 객체들의 공통된 특징을 파악해 필요없는 특성을 제거하는 과정을 가르킴
  • 객체들은 실체 그 모습이지만, 클래스는 객체들이 어떤 특징들이 있어야 한다고 정의하는 추상화된 개념

3) 상속 (Inheritance)

  • 기존 상위 클래스의 기능을 가져와 재사용할 수 있으면서도 동시에 새로운 하위 클래스에 새로운 기능도 추가할 수 있는 것
  • 상속이 필요한 이유는 코드의 중복을 없애기 위함(코드의 중복이 많아지면, 개발단계에서도 피곤하고, 유지 보수에도 많은 비용이 들게됨)
  • 상속관계를 맺으면 자식 객체를 생성할 때 부모 클래스의 속성들을 자동으로 물려받기 때문에 자식 클래스에서 또 정의할 필요가 없다

4) 다형성 (Polymorphism)

  • 형태가 같은데 다른 기능을 하는 것을 의미함
  • 구체적으로 이야기하면, 상속과 연관있는 개념으로 한 객체가 상속을 통해 기능을 확장하거나 변경하여 다른 여러형태(객체)로 재구성 되는 것을 말한다
  • 오버로드(Overload) 또는 오버라이드(Override)가 다형성의 대표적인 예라 할 수있고, 이것을 구현하는 걸 오버로딩(Overloading)과 오버라이딩(Overriding)이라고 한다
  • 오버라이딩은 하위클래스(자식)가 상위클래스(부모)에서 만들어진 메서드를 자신의 입맛대로 다시 재창조해서 사용하는것을 말함
  • 오버로딩은 하나의 클래스 안에서 같은 이름의 메서드를 사용하지만 각 메서드마다 다른 용도로 사용되며 그 결과물도 다르게 구현하는 것을 말한다.
  • 오버로딩이 가능하려면 메서드끼리 이름은 같지만 매개변수의 개수나 데이터 타입이 달라야한다.
  • 다형성을 사용하면 같은 이름의 속성을 유지함으로써, 속성을 사용하기 위한 인터페이스를 유지하고, 메서드 이름을 낭비하지 않는다.
  • API가 많아질수록 복잡성은 증가하기 때문에 다형성은 유용하며 재사용성을 늘려주어 유지보수가 용이하도록 도와주는 개념이다

5. 정리

OOP는 어떤 대상을 추상화하여 공통점을 찾고, 그것을 캡슐화해 한 군데에 모아 객체를 만들고, 새로운 객체가 상속받아 재사용이 가능하게 만들어준다.

상속받은 객체는 다형성을 통해 기능을 수정 또는 추가하여 재사용할 수 있다

 

 

 

 

https://victorydntmd.tistory.com/117

 

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

1. 객체 지향 프로그래밍 ( Object Oriented Programing ) 1) 객체 객체란 말 그대로 대상을 나타내는 단어입니다. 예를 들어, 사람 개인 한 명 한 명을 모두 객체라 할 수 있고, 책 한 권 한 권을 객체라

victorydntmd.tistory.com

https://evan-moon.github.io/2019/08/24/what-is-object-oriented-programming/

 

알고 보면 재밌는 객체 지향 프로그래밍, OOP 흝어보기

이번 포스팅에서는 , 줄여서 흔히들 OOP라고 부르는 설계 방법론에 대해서 이야기해보려고 한다. OOP는 프로그래밍의 설계 패러다임 중 하나로, 현실 세계를 프로그램 설계에 반영한다는 개념을

evan-moon.github.io

https://velog.io/@gillog/OOP%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

반응형
LIST

'코딩 > 기초 지식' 카테고리의 다른 글

객체와 인스턴스의 차이  (0) 2022.07.21
SQL과 NoSQL  (0) 2022.07.11