객체 지향 프로그래밍이란

김민영·2023년 1월 14일
0

CS 스터디

목록 보기
8/32

의미

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

키워드

클래스 + 인스턴스 ( 객체 )

클래스

  • 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메서드로 정의한 것. 객체를 만들기 위한 메타 정보

인스턴스(객체)

  • 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것. 실제 프로그램에서 사용하는 데이터

추상화

  • 클래스를 설계하는 것 자체. 공통의 속성이나 기능을 묶어 이름을 붙이는 것.

캡슐화

목적

  • 코드를 재수정 없이 재활용

  • 접근 제어자를 통한 정보 은닉

  • 캡슐화를 통해 객체가 외부에 노출하지 말아야할 정보 또는 기능을 접근제어자를 통해 적절히 제어 권한이 있는 객체에서만 접근하도록 할 수 있음.

    • 코드 수정 발생 시, 책임이 있는 객체만 수정하면 되므로 영향 범위를 예측하는 데 수월해짐.
  • 기능과 특성의 모음을 클래스라는 캡슐에 분류해서 넣는 것.

상속

  • 부모 클래스의 속성과 기능을 그대로 이어받아 사용 가능. 기능의 일부를 변경해야 할 경우, 상속받은 자식 클래스에서 해당 기능만 다시 수정(정의) 하여 사용할 수 있게 함.
  • 다중 상속은 불가능. 클래스 상속 관계에서 혼란을 줄 수 있으므로 상속은 하나씩.

다형성

  • 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있음.

오버라이딩

  • 부모 클래스에서 메서드와 같은 이름, 매개변수를 재정의 하는 것.

오버로딩

  • 같은 이름의 함수를 여러 개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것.

getter, setter

  • 멤버변수에 직접 접근하지 못하도록 private로 접근 지정자를 설정하고, public으로 getter, setter 메서드를 만듦.
  • getter, setter를 사용하면 메서드를 통해 접근하기 때문에, 메서드 안에서 매개변수와 같이 올바르지 않은 입력에 대해 사전에 처리할 수 있게 제한하거나 조절할 수 있음.
  • setter에서 유효 범위를 넘은 정수가 들어오면 처리 후 set 하거나 예외처리 가능.

장점

  • 코드 재사용 용이
    • 남이 만든 클래스 이용 가능. 상속을 통해 확장해서 사용 가능.
  • 유지보수 용이
    • 수정할 부분이 클래스 내부에 멤버 변수 혹은 베서드로 존재하므로 그 부분만 수정하면 됨.
  • 대형 프로젝트에 적합
    • 클래스 단위로 모듈화. 여러 명, 여러 회사에서 프로젝트 개발 시 업무 분담 용이.

단점

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

객체 지향 5가지 원칙

레퍼런스

https://jeong-pro.tistory.com/95

profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글