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

전준영·2022년 10월 18일
0

TIL

목록 보기
10/10
post-thumbnail

1. 객체지향 프로그래밍이란

풀어야하는 문제 혹은 구현해야하는 기능을
객체로 정의해 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍방법

👍 장점

  • 코드 재사용 용이하다
    ex) 상속을 통한 확장
  • 유지보수 쉬움
    ex) 클래스 안의 메서드 혹은 정의만 수정하면 된다.
  • 대형 프로젝트 적합
    ex)클래스 단위로 모듈화시켜 업무분담이 용이

😢 단점

  • 처리 속도가 상대적으로 느림

  • 객체가 많으면 용량이 커질 수 있음

  • 설계시 많은 시간과 노력이 필요


2. class란?

◾ 관련있는 집단에 속하는 속성, 행위를 변수나 함수로 묶어놓은것 ▶ 객체를 만들기 위한 메타정보.

1. class 라는 것은 틀이다.
ex) 붕어빵 틀
2. 이 클래스에는 이러한 데이터가 들어올 수 있다 라고 정의.
ex) 팥,슈크림 등등..
3. 클래스를 이용하여 데이터를 넣어서 새로운 인스턴스를 생성하면 그것이 오브젝트
ex) 팥 붕어빵, 슈크림 붕어빵..

오브젝트 = 실제로 메모리에 할당되어 프로그램에 쓰이는 데이터


3. 객체지향 프로그래밍 키워드

1) 💙추상화

추상화란 구체적인 것을 분해해서 관찰자가 관심 있는 공통적 속성이나 기능을 재조합하는 것
사람이라는 클래스를 설계할 때 사람이 가지고있는 공통적 속성을 찾는다.
몸무게, 나이, 키 등등의 값을 가질 수 있고 먹다, 자다 등등 동사로 표현되는 특성을 기능/행위 라고 한다.
이러한 기능/행위는 그 기능을 또는 행위를 수행하기위한 로직이라는 것을 갖게된다.
이러한 것을 객체지향에서는 메서드라고 표현한다.

But 모든 특성을 사용하기엔 범위가 너무 넓기때문에 애플리케이션의 경계라는 것이 필요하다.
내가 만들고자하는 애플리케이션에 맞게 클래스를 정의하는 것.
예를 들어 학교 애플리케이션을 만들고 있다면 사람은 선생님,학생 등이 될것이고 마트 애플리케이션이 된다면 점원, 고객 등 구체적 이름으로 바뀔 수 있다. 이처럼 애플리케이션 경계에 따라서 사람의 클래스 설계가 달라져야 한다.
학교, 마트 애플리케이션에 대해 만들면서 사람 클래스를 보면 필요 없는 특성들이 보인다.

따라서 관심 영역에 있는 특성들만 추출하여 목적에 맞게 표현하는 것이라고 정리할 수 있다.

2) 💊 캡슐화

데이터를 은닉하고 데이터 기능을 노출시키지 않음.

관련된 필드(속성)와 메소드(기능)를 하나로 묶고, 실제 구현 내용을 외부로부터 감추는 기법(정보은닉)
만일의 상황(외부에서 조작)을 대비해서 특정 소성이나 메소드를 사용자가 조작할 수 없도록 숨겨 놓은 것
외부에서는 공개된 메소드(기능)의 인터페이스를 통해 접근할 수 있다.

객체 지향 프로그래밍에서는 캡슐화를 통해 객체가 외부에 노출하지 않아야할 정보 또는 기능을 접근제어자를 통해 적절히 제어 권한이 있는 객체에서만 접근하도록 할 수 있기에 코드의 수정이 일어났을 때 책임이 있는 객체만 수정하면 되기에 영향 범위를 예측

기능과 특성의 모음을 "클래스"라는 "캡슐"에 분류해서 넣는것이 캡슐화

3. 👨‍👩‍👧‍👧 상속성

상위 부모 객체의 속성과 특징을 하위 객체가 물려 받는 것.

(만약 어떠한 객체가 이미 존재하는 객체의 특성을 가지고 있다면, 기존 객체의 특성을 상속시켜 만들 수 있음.)

4. 🎹 다형성

같은 함수가 있어도 매개변수에 따라 각자 다른 일을 하는 것

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

즉 오버라이딩(Overriding), 오버로딩(Overloading)이 가능하다는 얘기다.

오버라이딩 : 부모클래스의 메서드와 같은 이름, 매개변수를 재정의 하는것.

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


참고자료

  1. 드림코딩 YOUTUBE 객체지향 클래스와 오브젝트의 차이점(class vs object), 객체지향 언어 클래스 정리,

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

  3. https://deftkang.tistory.com/4 [deftkang의 IT 블로그:티스토리]

profile
Just do it!

0개의 댓글