Section 2 [unit 2] - 객체 지향 프로그래밍

kongchip·2022년 7월 22일
0
post-thumbnail

절차적 언어

  • 초기의 프로그맹 언어는 일반적으로 절차적 언어 라고 부름 (C,포트란 등)
  • 절차적 언어는 순차적인 명령의 조합

객체 지향 언어

  • 클래스 라고 부르는 데이터 모델의 청사진을 사용해 코드 작성
  • 현대의 언어들은 대부분 객체지향의 특징을 갖고 있음 (대표적으로 Java, C++, C# emd)
  • JavaScript: 객체 지향으로 작석 가능

클래스

  • 일종의 원형(orginal form)으로, 객체를 생성하기 위한 아이디어나 청사진으로 세부사항(속성)이 들어가 있지 않다.
    -> 세부 사항을 넣는다면 객체가 된다.

  • 클래스는 객체를 만들기 위한 생성자(constructor) 함수를 포함

인스턴스

  • 클래스의 사례(instance object)로 클래스를 통해 만들어진 객체

OOP

  • 프로그램 설계 철학 중 하나
  • OOP의 모든 것은 객체로 그룹화됨
    -> 객체 내에는 데이터와 기능이 함께 있다 라는 원칙에 따라 메서드와 속성이 존재

OOP Basic Concepts - 객체 지향 프로그래밍의 주요 개념

Encapsulation (캡슐화)

  • 코드가 복잡하지 않게 만들고, 재사용성을 높임

Abstraction (추상화)

  • 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화

Inheritance (상속)

  • 불필요한 코드를 줄여 재사용성을 높임

Polymorphism (다향성)

  • 다양성으로 인해 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해짐

Encapsulation (캡슐화)

  • 데이터와 기능을 하나의 단위로 붂는 것
  • 은닉화(hiding): 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
    -> 디테일한 구현이나 데이터는 숨기고, 객체 외부에서 핋요한 메서드만 노출
    -> 장점 : 객체 내 메서드의 구현만 수정하고, 노출된 메서드를 사용하는 코드의 흐름은 바뀌지 않도록 만들 수 있다.
    -> 단점 : 데이터의 형태가 바뀔때는 코드의 흐름에 큰 영향을 미치게 된다.=
  • 느슨한 결함(Loose Coupling): 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미

Abstraction (추상화)

  • 내부 구현은 복잡하지만 실제로 노출되는 부분은 단순하게 만드는 개념
  • 캡슐화와 다른점
    -> 캡슐화 : 코드나 데이터의 은닉에 포커스
    -> 단순한 이름으로 정의하는 것에 포커스
  • 클래스 정의 시, 메서드의 속성만 정의한 것을 인터페이스라고 부름 -> 초상화의 본질

Inheritance (상속)

  • 부모 클래스의 특징을 자식 클래스가 물려 받는 것 -> 기본클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다.
  • 그림과 같이 Student클래스는 Human클래스를 상속받을 수 있으며, 추가적으로 속성/메서드를 추가할 수 있다.

Polymorphism (다향성)

  • 똑같은 메서드라 하더라고, 다른 방식으로 구현될 수 있다
    -> 만약 언어 자체에서 다향성을 제공하지 않는다면 부모(기본)클래스에 종류별로 분기를 시켜서 하나하나 다르게 만들어야 한다.
profile
좋은 프론트엔드 개발자가 되기위한 블로그

0개의 댓글