본문 바로가기

Programming

객체지향

객체 지향이란 말 그대로 모든 것을 독립적인 객체로 나누는 것을 지향한다는 의미 (ex 레고 블록)

 

독립적인 객체로 나누는 것의 장점은?

1. 재활용 하기 좋다.

2. 코드 이해하기에 좋다.

 

재활용 하기 좋다.

바퀴모양의 레고블록이 있다고 가정했을 때, 이 레고 블록은 굴러가는 기능만 하는 하나의 레고 블록입니다.

우리는 이 블록을 비행기에도 붙일 수 있고 자동차에도 붙일 수 있습니다.

한 번 만들어서 여러곳에 사용할 수 있다는 의미입니다.

 

코드 이해하기에 좋다.

비행기에서만 동작하는 레고블록을 만들었다고 가정합니다. 그렇다면 이 레고 블록을 이해하기 위해서는 비행기에 대해서도 이해해야하고 바퀴에 대해서도 이해해야합니다.

하지만 기능과 쓰임새를 분리하여 객체로 만든 순간, 이 레고 블록을 처음 접한 사람은 굴러가는 기능만 이해하면 이 블록을 사용할 수 있게 됩니다. 

 

 

 


절차 지향과 객체 지향의 차이점은?

개발자의 설계 마인드에서 차이점을 찾을 수 있습니다.

 

ex) 나는 버스를 타고 지하철타고 회사갔다가 지하철, 버스 타고 집에 옵니다. 를 개발할 때

절차 지향의 경우, 그 과정을 동작(메소드)로 구현합니다.

객체 지향의 경우, 문장 내 구성 요소들을 객체화 시켜서 구성물을 만든후 조합시킵니다.

절차지향 (위), 객체 지향(아래)

 


객체지향에서 중요한 개념

추상화, 캡슐화, 상속화, 다형성

 

추상화 : 모든 것을 객체화 시키는 과정

나는 집에서 밥을 먹었다. -> 사람, 장소, 음식

 

캡슐화 : 사용하는 메소드만 공개하고 그 내용은 은닉하는 것

"먹는다"는 동사를 사용하기 위해 먹을 때 일어나는 화학작용, 소화 원리를 알 필요는 없습니다. 너무 많은 정보는 사용하는데 혼란만 줄 뿐입니다. 한 가지 기능을 하는 객체로 사용하기 위해서는 필요한 기능을 제외한 내용들은 은닉하는데 그것을 캡슐화라고 합니다.

 

상속화 : 공통된 성격을 가지는 상위 분류

개, 고양이, 새를 만들 때 각각 새로 만들 필요없이 "동물" 을 만들면 공통적인 기능을 또 만들 필요가 없게 됩니다.

개 = 동물 + "멍멍"

고양이 = 동물 + "야옹야옹"

 

다형성 : 하나의 클래스가 다른 결과물을 낼 수 있도록 유연하게 설계

인터페이스

 

 

'Programming' 카테고리의 다른 글

Shader  (0) 2020.04.10
[도서]읽기 좋은 코드가 좋은 코드다  (0) 2020.04.10
문자열 리터럴 상수  (0) 2020.04.04
빌드 과정  (0) 2020.03.18
[C#] 이란  (1) 2020.03.09