객체 지향 프로그래밍

MoonGoon·2024년 7월 22일
0

모각코

목록 보기
14/19

절차지향

  • 물의 흐름과 같이 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍

  • 대표적인 언어

    • C
  • 컴퓨터의 동작 원리와 유사하기 때문에 객체지향 보다 속도적으로 유리하다

  • 하드웨어가 발달함에 따라 소프트웨어의 속도 차이가 큰 문제가 되지 않아서 객체지향 언어가 탄생하였다.

  • 단점

    • 각 코드가 매유 유기성이 높아 유지보수가 어렵다.
    • 실행 순서가 정해져 있기 때문에 코드의 순서를 바꾸면 동일한 동작을 기대하기 어렵다.

객체지향 프로그래밍

객체지향

  • 객체들의 집합으로 프로그램의 상호 작용을 표현

  • 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식.

  • 장점

    • 유지보수가 쉽다.
    • 코드의 재사용성이 높다.
  • 단점

    • 설계에 많은 시간 소요
    • 처리 속도가 다른 프로그래밍 패러다임에 비해 느리다.

재사용성과 생산성

  • 재사용성
    • 기존 시스템에 추가적인 기능을 덧붙이거나 수정하여, 기존 시스템을 그대로 사용할 수 있는 능력
    • 소프트웨어에서의 재사용성은 한 번 작성한 코드를 별도의 수정 없이 다른 곳에서 사용하는 것
    • 객체지향 분야에서는 클래스의 상속을 통해 이루어진다.

용어

클래스

객체를 생성하기 위한 설계도, 흔히 붕어빵 틀 = 클래스, 붕어빵 = 객체 라고 비유한다.

객체

클래스라는 설계도에 의해 생성된 것

객체 지향 관점에서는 선언

인스턴스

객체의 생성자를 통해 실체화 한 것, 객체 지향 관점에서 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다.

붕어빵 예시에서는 붕어빵 틀(클래스)를 통해 붕어빵(객체)가 만들어지는데, 각각 붕어빵(객체)은 개별적인 특성(굽기 정도, 밀가루 양, 앙금 양)이 있기 때문에, 바싹 익은 붕어빵(인스턴스), 앙금이 많은 붕어빵(인스턴스) 등이 있다. 이들은 모두 붕어빵(객체)이다.

프로그래밍 구조

  • 프로퍼티와 메소드
    • 프로퍼티
      • 객체의 상태나 속성
      • 객체가 가지고 있는 데이터나 값
    • 메소드
      • 객체가 수행할 수 있는 동작이나 기능
  • 추상화
    • 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것
  • 캡슐화
    • 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것
  • 상속
    • 상위 클래스의 특성을 하위 클래스가 이어받아서 재사용하거나 추가, 확장하는 것
    • 코드의 재사용 측면, 계층적인 관계 생성, 유지 보수성 측면에서 중요
  • 다형성
    • 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것을 말한다.
    • 오버로딩과 오버라이딩

간접 참조 (Indirection)

  • 다른 객체나 모듈에 간접적으로 접근하여 참조하는 방법
  • 객체간 결합도를 낮추며 유지보수에 용이
  • 추가적인 로직이 필요하며 처리 속도가 상대적으로 느릴 수 있음
  • 간접 참조를 너무 많이 사용하면 코드의 가독성이 떨어짐

상속에서의 override, super 키워드

  • override
    • 부모로부터 상속되는 메소드를 재사용하는 것
  • super
    • 자신의 super 클래스를 가리키는 것, 즉 부모 클래스를 가리킴
    • 서브클래스에서 슈퍼클래스의 프로퍼티나 메소드를 사용하고 싶을 때 사용한다.

Reference

instance란?

Enum 랜덤하게 쓰기

profile
Swift 개발자를 희망합니다

0개의 댓글