객체지향 프로그래밍이란 1편 -정의와 왜 필요한지?-

1. 객체 지향 프로그래밍?

 

'프로그래밍의 패러다임' == 방법론

 

객체지향프로그래밍(Object-Oriented Programming)은 컴퓨터 프로그래밍의 패러다임 중 하나

 

컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나

 

여러 개의 독립된 단위인 객체들과 그 객체들 간의 상호작용으로 파악하는 프로그래밍

 

객체들은 서로 메시지를 주고받고 데이터를 처리한다

 

 

2. 객체?

 

객체 = 정보 + 행동을 모두 가진 것을 변수 처럼 이름을 붙이면 그것이 바로 객체

 

정보는 '변수'로 표현하고 행동은 '함수'로 표현 >> 객체 = 변수 + 함수

 

예) 가수 =  예쁘다(정보) + 노래부른다(행동), 강아지 = 리트리버(정보) + 먹기,자기(행동)

 

가수가 강아지에게 먹이를 주었다. 강아지는 가수에게 멍멍 짖었다

 

 

변수, 함수들을 독립된 상태로 프로그래밍 하다가 현실세계에는 변수와 함수들이 함께 존재한다는 것을 깨닫고 둘을 어떻게 묶어서 할 수 있을까? 고민하다가 객체지향프로그래밍이 탄생

 

 

3. 절차지향프로그래밍과 객체지향프로그래밍

 

과거에는 하나의 global한 데이터를 바탕으로 여러개의 함수1,함수2,함수3,...으로 다루었다

 

프로그램이 처음부터 차례대로 수행되는 절차를 핵심으로 바라보는 프로그래밍

 

중간에 무엇인가 잘못되었다고 생각하여 고치려고하니까 다른데도 문제생기면서 고치기가 너무 힘들었다

 

 

세모에서 네모 가는길이 문제가 생겨서 고쳤더니 네모에서 동그라미 가는길이 네모에서 별이 나와서 다시 동그라미가 나오게 고쳐야하는... 연쇄작용?

 

그래서 문제가 생기는 원하는 부분만 고쳐도 전부 잘 돌아갈 수는 없나?

 

자기가 정한 기준에 맞춰 하나의 object안에 필요한 데이터, 함수들을 넣어두어 추상화된 형태로 만들고

 

여러개의 object를 만들어 이들이 상호작용하도록 프로그래밍이 객체지향프로그래밍

 

 

관객(object)이 박수(행동)를 치면 <<>> 가수(object)가 노래(행동)를 부른다 

 

복잡한 현실세계를 그대로 프로그래밍 설계에 반영

 

 

4. 추상화?

 

복잡한 것은 블랙박스처럼 내부로 숨기고 필요한 기능만을 드러냄

 

가수가 어떻게 저렇게 노래를 잘 부를까? 설명하지 않고.. 노래만 잘 부르는 것을 보면 그만

 

가수.노래()하면 알아서 노래하면 그만임

 

래퍼는 어떻게 말을 저렇게 빨리할까?? 랩만 빨리 잘 하면 그만

 

스마트폰이 어떻게 이렇게 잘 돌아가는지 몰라도 내가 잘 쓰기만 하면 그만

 

 

 

5. 객체지향프로그래밍의 장단점

 

5-1) 장점?

 

클래스 단위로 모듈화시켜서 대규모 소프트웨어 개발에 적합하다

 

예)누구는 로그인 기능, 누구는 게시판a 기능을 개발, 누구는 게시판b 기능을 개발..

 

필요한 부분만 수정하기 쉽기때문에 프로그램의 유지 보수가 쉽다

 

예)개발한 로그인a 기능이 잘못되었으면.. 로그인b 기능으로 고치면 그만

 

콘서트에서 가수a가 아프면 가수b로 대체하듯이

 

하지만 위에서 아래로 보는 절차지향프로그래밍은 어디서 문제가 생겼는지 보려면 처음부터 전부 살펴봐야하는

 

 

5-2) 단점?

 

설계하는데 많은 노력과 시간이 필요함

 

그래서 가벼운 알고리즘 문제 풀이에는 객체지향프로그래밍으로 하지 않는다

 

객체구조를 생각하고 어떻게 상호작용시킬지 생각하다가 시간 다간다

 

실행 속도도 상대적으로 느리다

 

컴퓨터친화적인 것은 절차지향프로그래밍으로 처음부터 차례대로 수행하는게 컴퓨터 처리구조라 더 빠르지

 

객체지향프로그래밍은 인간친화적이라 속도가 느리다

 

컴퓨터 사양이 좋아야해.. 요새는 다 좋아서 신경 안쓰고 있지만 

TAGS.

Comments