:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/05/11 11:49
OOP는 사용자 입장에서의 기능 자체에 영향을 준다기 보다는 프로그래머 입장에서의 코딩의 효율성을 높여주는 일종의 방법론이라고 보시면 될 것 같아요.
일단 모든 기능이 아주 작은 단위로 모듈화되어있기 때문에, 설계하기 쉽고 특히 유지보수하기에 편하죠.
10/05/11 12:07
예를 들어, 프로그램 A에 기능 #을 추가한다고 생각해보세요.
만약 A가 절차적 프로그래밍으로 만들어져 있다면, 기능 #을 추가하기 위해서는 코드 어딘가에 기능 #을 추가해주어야 할텐데, 기능적으로 명확히 구분되어있지 않다면 어디에 추가해야 할지도 명확하지 않고 #을 추가하더라도 다른 모듈이 정확히 잘 작동할지 보장할 수 없죠. 게다가 대부분의 경우 코드를 리뷰하는데에만도 많은 시간을 쏟게 됩니다. 자기 자신의 소스도 몇 달 지나면 까먹기 마련인데, 하물며 다른 사람이 내 소스를 유지-보수 하는 경우에는 그야말로 헬이죠. 하지만 OOP로 구성되어 있다면, 기능 #에 관련된 객체들을 알 수 있으니 코드 어디에 무엇을 추가해야 하는지 명확해지고, 거기에 #에 대한 모듈만 코딩해주면 나머지 모듈은 전혀 건드리지 않았기 때문에 잘 작동할 것이라는 걸 보장할 수 있죠. 음, http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/C++/Documents/Object_Class#s-3.4.1 를 한번 읽어보셔요.
10/05/11 12:31
저는 사실 매력을 잘 못느낍니다. 그래도 사용은 합니다.
어플리케이션개발을 하지 않아서 그런걸지도 모르지만.. 자바같은경우는 다른것보다 자바가상머신때문에 많이쓰이는데 역시나 로우단에서는 쓰일일이없어서..
10/05/11 13:06
간단한 프로그램을 만드실때는(1천 라인 정도?) C 같은 절차지향적 프로그래밍 방식이 훨씬 코드도 짧고 단순하고 개발도 빠르죠.
적어도 1만 라인은 넘어가는 코드를 만들어봐야, 아~~~ 이래서 사람들이 OOP를 하는구나~ 하는겁니다. 그리고, 수십만 라인이 넘어가게 되면, 그것도 모잘라서 디자인패턴이니, 리팩토링이니... 하는걸 찾게 되구요. 게다가 여러 프로그래머들과 혐업을 하게 되면, 더 크게 다가오는게 OOP 입니다. 처음에는 대체 왜 이런 귀찮은 짓을 하는지 잘 모를거에요.
10/05/11 13:13
이전에도 어느글인가에 달았던 기억이 납니다만 못 찾겠네요.
그냥 다시 적어볼게요. 프로그래밍이라 함은 우리의 현실세계를 컴퓨터 세계로 형변환을 하는 겁니다. 이 형변환을 하는 방식이 절차적 프로그래밍일 경우는 순차, 반복, 분기로 표현하는 겁니다. 객체지향적 프로그래밍에서는 이걸 객체 ( 상태와 행동으로 이루어져 있음 )와 객체간의 관계로 표현하는 겁니다. 절차적( 즉 하나의 흐름 ) 으로 현실세계를 표현하려고 하다 보니 모델링이 너무 복잡하게 얽히게 됩니다. 그래서 좀 더 현실세계와 비슷한 방법을 찾아서 나온 것이 OOP입니다. 요즘 시대에 잘 짜여진 프로그래밍이라는 건 유지보수성이 좋은 프로그램을 말합니다. ( 예전엔 퍼포먼스가 좋은 프로그램이었습니다. ) OOP 가 이 유지보수성에 더 적합할 뿐입니다. 예를들어 AMPS 방식을 사용하던 핸드폰을 CDMA 방식으로 변경한다고 하더라도 내가 핸드폰을 사용하는데 부분은 전혀 변경할 필요가 없습니다. 다만 핸드폰 객체 내부적인 소스들을 변경할 뿐이죠. 따라서 좀 더 OOP 적으로 만들기 위해선 객체를 잘 설계해서 다른 객체와의 관계를 최소한으로 줄이는 것이 중요합니다. ( 이것을 의존성을 줄여야 한다고 부르고 스프링의 IoC(inversion of control) 가 이것이라고 보시면 됩니다. ) 이것이 제대로 되지 않으면 OOP로 짜는 의미가 없어지죠. 음 그림을 그려가면서 설명하면 훨씬 쉽게 설명할 수 있을 듯한데 글로만 하려니 힘드네요.
10/05/11 13:24
저는 객체지향을 좋아하는 이유가 우리가 실제 세상에서 생각하는 방식과 흡사하기 때문입니다. 각 객체들은 그만의 특성을 가지고 있고 그것들은 상호작용을 하며 살아가죠. OOP로 프로그램을 짜다보면 절차식 프로그램은 불편해서 하기 싫어지던데요...흐흐
10/05/11 14:01
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/SoftWare_engineering/OOP#s-1
전 이쪽 전공이 아니라 잘은 모르지만 이런 글이 있더라구요.
10/05/11 14:13
요즘엔 대부분의 application 은 객체지향적인 방법론을 씁니다.
설령 c 로 코딩하는 프로젝트가 있다 하더라도 최대한 구조화 하고 좋은 설계를 통해 유지, 보수 비용을 줄이려고 하죠. 데이터와 함수의 인터페이스를 일관성 있게 설계하고, 서로 관련된 데이터와 함수를 모으고, 일관성 있고 체계적인 naming 을 하는 등등 ... data abstraction, encapsulation 하는 것들입니다. C++ , Java, Objective C 같은 언어들은 이러한 구조적이고 체계적인 코딩 방법을 언어적으로(혹은 문법적으로)지원합니다. 다시 말해서 C 에서 여러가지 테크닉을 사용해서 (조금) 어렵게 구현하는 것을 oop 언어에서는 비교적 쉽게 객체지향적인 방법으로 코딩이 가능하다는 말입니다.
|