[Programming] Object Oriented Programming(OOP, 객체 지향 프로그래밍)

황인용·2020년 7월 22일
0

Programming

목록 보기
1/8
post-thumbnail

Object Oriented Programming(OOP, 객체 지향 프로그래밍)

  • 더 나은 프로그래밍을 만들기 위한 프로그래밍 패러다임
  • 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것
  • 클래스를 이용하여 연관 있는 데이터 부분(변수)와 처리부분(함수)를 묶어서 객체(인스턴스)를 생성하여 프로그래밍화 한다
  • 이러한 객체들을 마치 레고 블럭처럼 조립해서 하나의 프로그램을 만드는 것이 객체 지향 프로그래밍
  • C언어의 경우, 절차 지향 프로그래밍언어로
    프로세스가 함수 단위로 순서대로 진행되어 프로그램화 되어 있다

Object(객체)

  • 물리적으로 존재하거나(자동차, 책, 사람 등등), 추상적인 것(회사, 날짜) 중에서 자신의 속성과 동작을 가지는 모든 것을 지칭
  • 속성(필드)과 메소드(동작)으로 구성된 객체로 모델링 할 수 있음

Class(클래스)

  • 같은 종류의 객체의 속성과 행위를 정의한 것
  • 자동차, 사람, 책, 등등 객체들이 공통적으로 갖는 속성들을 모아서 정의내린 것

Method(메서드)

  • 클래스로부터 생성된 객체를 사용하는 방법
  • 객체의 속성을 조작하는 데 사용
  • e.g. 자동차의 기능, 사람의 역할, 등등

OOP의 특징

Encapsulation(캡술화)

  • 하나의 객체에 대해, 해당 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미
  • 클래스를 우리가 만들 때, 이 클래스에서 만들어진 객체가 특정한 목적을 잘 수행할 수 있도록 사용해야할 변수와 해당 변수를 가지고 특정 메서드를 관련성 있게 클래스로 구성해야한다

정보은닉

  • 유저 정보를 가지고 있는 User 라는 객체에서 유저의 정보가 Public으로 선언되어 있으면, 누구나 해당 정보를 확인하고 변경가능성이 있음
  • 따라서, Private하도록 데이터를 보호해서 접근을 제한

Abstraction(추상화)

  • 목적과 관련이 없는 부분을 제거하여 필요한 부분만 표현하기 위한 개념
  • 큰 틀의 클래스를 구현하고, 해당 클래스 안에 객체들의 공통적인 요소나 필수적인 요소들을 담는 것을 추상클래스
  • e.g. BMW5d(BMW), A7(아우디), K5(기아) 등등의 자동차객체
    • 벤더사가 다르다고 해서 클래스를 각각 만들 필요 없다
    • 자동차의 본연의 기능들을 공통요소로 보고 메서드를 만듦
    • 만든 메서드를 모아 클래스로 만듦
  • 추상화란 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법

Inheritance(상속성, 재사용성)

  • 객체지향에서 상속이란,
    기존 상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있도록 도와주는 개념
  • 즉, 기존 클래스에서 기능을 가져와 재사용할 수 있으면서도, 동시에 새롭게 만든 클래스에 새로운 기능을 추가할 수 있다
  • 상속이 필요한 이유는 코드의 중복을 없애기 위함
  • e.g. 포유류 클래스, 고양이 클래스, 강아지 클래스
    • 고양이와 강아지는 모두 포유류
    • 포유류라는 클래스는 고양이 클래스와 강아지 클래스에 자신의 속성들을 물려줌 상속
    • 포유류 클래스와 고양이,강아지 클래스는 상속 관계

Polymorphism(다형성)

  • 형태가 같은데 다른 기능을 하는 것을 의미
  • 즉, 같은 동작이지만 다른 결과물이 나올 때 '다형' 이라 한다
  • e.g. 고양이 클래스의 '울음' 이라는 메서드(속성)
    • 사자는 고양이과로서 사자 클래스는 고양이 클래스를 상속받을 수 잇음
    • 사자 클래스에서도 '울음' 이라는 메서드를 사용 가능
    • 하지만 고양이와 사자의 '울음'은 다른 객체
profile
dev_pang의 pang.log

0개의 댓글