Object Oriented Programming(OOP)

이윤택·2021년 6월 18일
0

OOP

목록 보기
1/2

객체 지향 프로그램. 프로그래밍 패러다임 중 하나로, 프로그래밍을 객체들의 모임으로 파악하고자 한다. 다른 패러다임 중 하나인 절차 지향 프로그래밍과 달리 OOP는 객체들이 서로 커뮤니케이션하며 데이터를 처리할 수 있다.

여기서 객체란, 특정한 대상을 나타내는 개념이다. '나'라는 사람, 내가 쓰는 '아이폰 11'이라는 스마트폰, 오늘 신고있는 그 '신발' 과 같이 각 대상 하나하나를 객체라고 할 수 있다. 같은 아이폰이더라도 누구의 소유인지, 언제부터 썼는지, 액정의 상태가 어떻게 되는지 등 세부사항이 모두 다르기 때문에 그 대상을 나타내는 객체 자체는 유니크하다고 할 수 있다.

OOP(Object Oriented Programming)

OOP란

:객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

클래스와 인스턴스 & 생성자

  • 클래스
    각 객체들이 공통적으로 갖는 속성을 모아 개념화한 것이라고 할 수 있다. 데이터를 사용하여 편리한 기능을 제공하고 다른 휴대폰과 통화를 할 수 있으며 사람들이 휴대하는 전화기인 '스마트폰', 눈 코 잎 손 발 등이 있고 IQ가 높으며 지상에서 생활하는 영장류인 '사람'은 클래스라는 개념으로 설명할 수 있다.
  • 인스턴스
    이러한 클래스에 속성 값을 넣어 만든 객체. 말 그대로 하나의 케이스일 뿐이다.
  • 생성자
    클래스로 인스턴스를 만들기 위해서는 생성자를 사용해야한다. 생성자를 통해 클래스에 속성값을 넣어 인스턴스를 만든다.

OOP 특징

1. Encapsulation (캡슐화)

-불필요한 정보를 감출 수 있다

-객체의 데이터를 외부에서 직접 접근하지 못하게 막는다

ex) 리모컨을 사용할 때 우리는 필요한 기능만 사용하지, 리모컨 내부의 회로 및 설계를 이해하며 사용하지는 않는다

2. Inheritance (상속)

  • 부모 클래스의 데이터들을 자식 클래스가 받을 수 있다 ( 수정 가능 )

  • 상속을 할 때 캡슐화를 유지하여 재사용을 쉽게 할 수 있다

ex) 아이폰이라는 클래스는 아이폰11과 아이폰12에 각각 아이폰의 데이터들을 물려주지만, 아이폰11과 아이폰12이 가진 데이터가 모두 같지는 않다(상속 받으며 정보를 수정할 수 있기 때문)

3. Abstraction (추상화)

  • 목적과 관련이 없는 부분을 제거하여 필요한 부분만 표현(실행)하기 위한 개념이다

ex) 아이폰이라는 클래스를 잘 추상화하여 만들어놓는다면, 아이폰11, 아이폰12 등의 업데이트가 있을 때 세부 자식 클래스들의 클래스들을 건드리지 않고도 손쉽게 변경사항을 적용시킬 수 있다

4. Polymorphism (다형성)

  • 형태는 같은데 다른 기능을 하는것

ex) 아이폰11과 아이폰12의 기능과 성능, 디자인은 비슷하지만 완전히 같지는 않다.

+++ 오버라이딩 : 부모 클래스로부터 상속을 받은 속성에 대해 자식 클래스에서 물려받은 속성을 재정의 하는 것

+++ 오버로딩 : 같은 이름의 메소드를 상황에 따라 다르게 할 수 있는 것(파라미터 수정 등)

profile
데이터 엔지니어로 전향중인 백엔드 개발자입니다

0개의 댓글