[TIL] 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)

Soo·2023년 2월 21일
0

💡 Object-Oriented Programming

  • 기능과 논리가 아닌 데이터 또는 객체를 중심으로 소프트웨어 설계를 구성하는 컴퓨터 프로그래밍 모델이다.

  • 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법

  • (Object-oriented programming(OOP) is defined as a programming paradigm(and not a specific language)built on the concept of objects,i.e., a set of data contained in fields, and code, indrcating procedures - instead of the usual logic-based system.)
    https://www.spiceworks.com/tech/devops/articles/object-oriented-programming/

[Key Concepts of OOP]

1. 추상화 (Abstraction)

  • 객체에서 공통된 속성과 행위를 추출하는 것
  • 공통의 속성과 행위를 찾아서 타입을 정의하는 과정
  • 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단하게 만드는 것

2. 캡슐화 (Encapsulation)

  • 데이터 구조와 데이터를 다루는 방법들을 결합시켜 묶는 것
  • 낮은 결합도를 유지할 수 있도록 설계하는 것

3. 상속 (Inheritance)

  • 클래스의 속성과 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것
  • 새로운 클래스가 기존의 클래스의 데이터와 연산을 이용할 수 있게 하는 기능

4. 다형성 (Polymorphism)

  • 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석 될 수 있는 것
  • 어떠한 요소에 여러 개념을 넣어 놓는 것

객체지향 프로그래밍은 하나의 클래스 내부에 같은 이름의 행위를 여러개 정의하거나 상위 클래스의 행위를 하위 클래스에서 재정의해 사용할 수 있기 때문에 '다형성' 이라는 특징을 갖게 된다.

  • 오버라이딩: 상위 글래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 것
  • 오버로딩: 같은 이름의 메서드가 인자의 갯수나 자료형에 따라 다른 기능을 하는 것

[OOP의 장단점]

🟢 장점

  • 재사용성: 클래스를 재사용하거나 상속을 통해 확장함으로써 코드 재사용이 용이하다.
  • 유지보수: 클래스 단위로 수정이 가능하기 때문에 유지보수가 편리하다.
  • 데이터 보호: 보다 쉽게 제어자와 메서드를 이용해 데이터를 보호하고 올바른 값을 유지할 수 있다.
  • 코드의 중복 제거: 코드의 중복을 제거해 코드의 불일치로 인한 오작동을 미연에 방지할 수 있다.
  • 클래스 단위로 모듈화시켜서 개발하기 때문에 업무 분담이 편리하고 대규모 소프트웨어 개발에 적합하다.

🔴 단점

  • 처리속도가 상대적으로 느리다.
  • 객체의 수가 많아짐에 따라 용량이 커질 수 있다.
  • 설계 시 많은 시간과 노력이 필요하게 될 수 있다.

https://evan-moon.github.io/2019/08/24/what-is-object-oriented-programming/
https://velog.io/@gil0127/Object-Oriented-Programming-in-Javascript

profile
Soogineer's Devlog

0개의 댓글