OOP 란 무엇인가?

이건우·2021년 2월 26일
0

코드스테이츠

목록 보기
3/3

OOP 는 Object Oriented Programing의 준말이다.

Object는 사전적인 의미에선 '대상'을 의미하는데, '변수'와 '함수' 를 그루핑한 그릇. 혹은 그 내부의 변수와 속성 메소드를 객체라 한다.

연관된 파일, 무엇을 그룹으로 하나하나 독립성을 가진다. ( 사전적인 의미대로의 각각 개인적인 사람, 책 독립적인 대상)

마치 시계의 여러가지 톱니바퀴가 여러가지의 부품과 유기적으로 서로 연결하여 작동이 되는 '시계' 가 되는것 처럼 우리도 '하나하나 독립겅을 가진 좋은 부품의 로직'을 만들어(Programing) 하는것이 목표라 할 수 있겠다

그러기 위한것으론,
다형성(Polymorphism) ,상속(Inheritance), Abstraction(추상화),
Encapsulation(캡슐화) 를 염두해야 한다. 왜 이것을 염두해 둬야 할것인가 ? 하나하나씩 천천히 언급해보겠다.

1) 추상화

목적과 관련없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념이다. 다같은 지도지만 지하철 노선도와 버스표는 어떻게 이루어졌을까 ? 우리에게 정말 필요한 '정거장'이름만이 버스 노선도에 있다. 하지만 우리는 그것에대해 별 이의를 느끼지않는다. 왜냐하면 그것이 정말 우리에게 필요한 정보이기때문이다. 지리적인 정보까지 담아둔 버스노선도라면 어떨까..?
우선 가독성이 떨어지고 끔찍할듯싶다.

2) 상속

객체란 그릇안에 '속성(property)'이 담겨있다. 그리고 함수가 그 객체 안 '속성'으로 담겨있다면 우리는 그 함수를 '메소드(method)'라 부른다. 하지만 만약 객체를 만드는 가운데에 '메소드' 속성이 중복이되었다라면 어떻게 해야할까 ?

상속은 바로 이런상황에서 필요하다. 코드의 중복을 없애기 위함이다. OOP예써는 상속을 통해 코드의 중복문제를 일부 해결 할 수 있다.

3) 다형성

형태는 같지만 기능이 다른것을 말한다. 이것은 비록 부모클래스로부터 상속을 받은 속성에 대해, 자식클래스에서 물려받은 속성을 재정의하여 살아간다. 즉 '재정의'라 함은 덮어씌우기를 하는것이다. 대신 같은 이름의 속성을 유지함으로써, 속성을 사용하기위한 메서드와 인터페이스도 역시유지, 메서드 이름을 낭비하지않는다.

4) 캡슐화

사전적으로 우리가 캡슐약은 어떤가 ? 가루약을 먹기 쉽게끔 작은 무언가에 담아 쉽게 약을 먹을수 있도록 도와줬던 것이 바로 캡슐이다. 프로그래밍에선 마찬가지로 정의된 '가루약'이 밖에 노출이 되지않고 자신의 클래스에서만 사용하기위해 정의한것이다.

클래스 & 인스턴스

클래스는 같은객체들이 공통적으로 같는 속성들을 모아 정의내린것을 '클래스' 라고한다.
기계로 표현하면, 같은 상품들을 찍어내는 기계가 바로 클래스이고, 찍혀낸 상품 하나하나가 바로 '객체'이다

생성자 (constructor)란 클래스가 인스턴스화 될때 최초로 실행된 것이 생성자이다.

profile
내가 느낌만알고 한줄도 설명할줄 모른다면 '모르는 것'이다.

0개의 댓글