Kotlin TIL(22) [객체지향 프로그래밍]

jxxn_a·2023년 11월 4일
1

TIL

목록 보기
23/27

💡객체지향 프로그래밍(OOP)💡

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

  • Class & Instanse
    예시 1) 붕어빵 기계(class) -> 붕어빵(Instance)
    예시 2) 차(class) -> Porsche, Audi(Instance)

💡객체지향 프로그래밍의 특징💡

💊 캡슐화(Encapsulation) 💊
객체의 데이터를 외부에서 직접 접근하지 못하게 막는다. (함수를 통해서만 조작이 가능하게 하는 작업)

  • 캡슐화의 2가지 관점

    1) 데이터 캡슐화
    : 객체의 상태와 행동을 하나 단위로 묶는 자율적 실체

    2) 데이터 은닉화
    : 외부에서 객체의 상태를 변경할 수 없게 숨기는 것

  • 정보 은닉 목적
    : 필요가 없는 정보는 외부에서 접근하지 못하도록 제한하는 것으로 private 키워드를 사용한다.

  • 정보 은닉이 필요한 이유
    : 은닉하지 않으면 객체의 상태 정보에 누구나 접근이 가능해지고, 이것은 잘못된 데이터가 들어갈 수 있다는 의미이다. 이것을 방지하기 위해 필요하다.

📑 추상화(Abstraction) 📑
데이터나 프로세스 등을 의미가 비슷한 개념이나 표현으로 정의해나가는 과정이면서 동시에 각 개별 객체의 구현에 대한 상세함은 감추는 것이다.

  • 객체들이 가진 공통의 특성들을 파악하고 불필요한 특성들을 제거하는 과정
  • 예시) 말티즈, 푸들, 시츄는 공통적으로 멍멍하는 소리를 내고, 꼬리가 있고, 다리가 4개가 있다. 이를 강아지라는 클래스로 추상화 할 수 있다.
  • 추상화를 사용 할 때 주의 할 점
    : 속성 위주가 아닌 동작 위주로 정의하는 작업을 하는 것인데 객체의 동작에 연관되지 않은 속성들은 결국 불필요하다.

  • 재사용성
    1) OOP의 가장 큰 특성 중 하나가 바로 코드의 재사용성과 상속의 개념이다.
    2) 같은 객체를 여러 개 만들어야하는 경우, 한 번 작성된 코드를 활용하여 동일한 객체를 만들 수 있다는 것이다.

💰 상속(Inheritance) 💰

  • 기존 상위 클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념이다.
  • 기존 클래스에 기능을 가져와 재사용할 수 있으면서도 동시에 새롭게 만든 클래스에 새로운 기능을 추가 할 수 있게 만들어준다.
  • 필요한 이유
    : 코드의 중복을 막을 수 있어서 코드가 더 간단해지므로 유지보수가 수월해지기 때문이다.

📁 다형성(Polymorphism) 📁

  • 다형성은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다.
  • 코드의 재사용, 유지보수가 용이하도록 도와준다.
    예시) 사자는 고양이과인데 고양이 class를 사자 class에서 상속 받는다고 하면, 사자 class에도 고양이 class 안에 있는 속성들을 상속받는다. 하지만, 고양이의 특징과 사자의 특징은 다르다. 이러한 것을 다형성이라고 한다.
  • overriding(오버라이딩)
    : 부모클래스에서 상속받은 자식클래스에서 부모클래스에 있는 메소드를 다시 재 정의해서 사용하는 것을 의미한다.

  • overloading(오버로딩)
    : 같은 이름의 메소들를 사용하지만 메소드마다 다른 용도로 사용되며, 그 결과물도 다르게 구현할 수 있게 만드는 개념이다.

  • 다형성의 장점
    : 같은 이름의 속성을 유지함으로서, 속성을 사용하기 위한 인터페이스를 유지하고, 메소드 이름을 낭비하지 않는다는 것이다.


[ 참고한 블로그 ]
https://velog.io/@zzangzzong/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8DObject-Oriented-Programming#-%EC%83%81%EC%86%8Dinheritance

2개의 댓글

comment-user-thumbnail
2023년 11월 4일

키워드 별로 잘 정리되어있어서 잘 읽히네요 😺

1개의 답글