객체 지향 프로그래밍

스르륵·2021년 11월 23일
0

객체지향 프로그래밍이란?

프로그래밍 패러다임 중 하나로, 필요한 데이터를 추상화시켜 객체를 만들고 그 객체 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방식

객체지향의 장단점

장점

  1. 코드 재사용 용이
    • 남이 만든 클래스를 가져와서 쉽게 사용할 수 있고 상속을 통해 확장 가능
  2. 유지 보수가 쉬움
    • 수정해야 할 부분이 클래스 내부에 존재하기 때문에 절차지향에 비해 수정하기 쉬움
  3. 대규모 작업에 유리
    • 클래스 단위로 모듈화 시켜 여러 사람이 참여하는 대규모 프로젝트 등에서 업무 분담이 용이

단점

  1. 처리속도가 상대적으로 느림
  2. 객체가 많으면 용량이 커질 수 있음
  3. 설계 시 많은 시간과 노력 필요

Keywords

1. 객체, 클래스, 인스턴스

  • 클래스
    • 어떤 문제를 해결하기 위한 데이터를 추상화시킨 것
    • 집단에 속하는 속성과 행동을 변수와 메소드로 정의한다.
    • 객체를 만들기 위한 메타정보라고 할 수 있다 (설계도)
  • 객체
    • 클래스 타입으로 선언됐을때 객체라고 부름 (클래스의 인스턴스)
    • 클래스에 선언된 모양 그대로 생성된 실체
    • 모든 인스턴스를 대표하는 포괄적 의미
  • 인스턴스
    • 실제 메모리에 구현된 구체적인 실체
    • 객체를 소프트웨어에 실체화한 것 —> 메모리에 할당
    • 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 함

추상화 (자료의 추상화)

  • 클래스를 설계하는 것 자체를 추상화시킨다고 할 수 있다
  • 공통의 속성이나 기능을 묶어 이름을 붙이는 것

캡슐화

  • 공통된 기능과 특성의 모음을 클래스라는 캡슐에 분류해서 넣는 것
  • 캡슐화의 목적
    1. 코드를 재수정 없이 재활용하는 것
    2. 접근 제어자를 통한 정보 은닉
      • 외부에 노출하지 말아야할 정보를 제어 권한이 있는 객체만 접근가능하게 할 수 있음

상속

  • 부모 클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게 하고 기능의 일부분을 수정해야 할 떄 자식 클래스에서 해당 기능만 다시 정의하여 사용할 수 있게 하는 것
  • 파이썬 상속
    1. 오버라이딩
      • 부모 클래스의 메소드를 자식 클래스에서 재정의 하는 것
      • super()를 사용하면 오버라이딩된 부모 클래스의 메소드를 사용할 수 있음 → 부모 클래스 호출 가능
    2. 오버로딩 불가
      • 하나의 메소드에게 다형성을 부여하는 것(매개변수 수에 따라 다른 함수 호출 등)
    3. 파이썬은 다중상속 가능하다고는 함
profile
기록하는 블로그

0개의 댓글