그런거는 일반 책을 보면 알건데.... 이런 얘기 하기 그런데 혹시 델파이 책이 한권도 없나요? 아님 인터넷이라도 찾아 봤나요? 그냥 저의 소견은 이렇습니다.
qna 라는 곳이 어떤 프로그램을 자신의 노력으로 하다가 막히였거나 어떻게 손을 대야할지 모를 경우 다른 프로그래머와 그 문제를 해결하면서 자신의 실력을 키워 나갈수 있는 장소라고 생각을 합니다. 제가 생각하는 qna는 누군가의 숙제나 또는 프로그램 개발또는 워드쳐주는 곳은 아니라고 생각을 합니다. 너무나 쉽고 델파이를 만난 초보면 답변 할수 있는 질문에 잠시 흥분을.......
객체 지향적인 프로그래밍이라는 것은 어떤 것인가? 이것을 한 마디로 요약하면 인간적인 프로그래밍이라고 할 수 있다. 한가지 예를 들면 간단한 슈팅 게임을 만든다고 할 때 프로그래머는 사용자, 즉 플레이어의 관점에서 프로그래밍을 할 것입니다. 이 경우 기존의 방식 즉, 객체 지향적이 아는 방법으로 프로그램을 만든다면 플레이어가 발사하는 미사일이 적국 객체에 도달했을 때 이것을 처리하는 방법은 상당히 복잡해지게 된다. 이유는 플레이어는 하나의 관점에서 여러 개의 적국 객체를 상대해야 하기 때문에 일일이 경우의 수를 들어 각 적군 객체에 대한 모든 처리 방법을 기술하고 나열해 주어야 한다. 이 경우 같은 내용의 루틴들이 난무하고 코드가 복잡해질 뿐만 아니라 버그가 존재할 가능성마저도 내포하고 있을 수 있다. 때문에 프로그램을 성공적으로 완성했다 하더라도 유지, 보수 뿐만 아니라 실제적인 샐행면에서 많은 부하가 걸리게 될 것이다. 그렇지만 이 곳에 객체 지향적인 요소를 도입할 경우에 사정은 달라진다. 이럴 경우에는 플레이어의 관점에서 프로그램을 만드는 것이 아니라 적군 객체의 관점에서 프로그램을 만들게 된다. 때문에 적군 객체는 자발적으로 행동을 할 수 있으며 플레이어는 일일이 적국 객체에 대한 처리를 하지 않아도 된다. 바로 이런 것이 객체 지향적인 프로그래밍이라 한다.
만약 복잡하고 심도 있는 윈도우 프로그래머가 되지 않는다면 객체 지향적인 프로그래밍은 필요가 없을지도 모른다. 그러나 프로그래밍을 하겠다고 결심한 이상 객체 지향적인 프로그래밍에 대한 개념 정도는 이해할 수 있어야 한다.
객체 지향적인 프로그래밍은 코드를 쉽게 쓸 수 있도록 하는 것이라기보다는 쉽게 사용할 수 있도록 유지시켜 주는 것을 의미한다.
객체 지향적인 프로그래밍은 다음과 같은 장점과 단점을 동시에 가지고 있다. 이러한 장점과 단점은 객체 지향적인 프로그래밍의 특성을 쉽게 이해할 수 있다.
객체 지향적인 프로그래밍의 가장 큰 장점으로 코드의 재 사용성을 들 수 있다. 최근의 프로그래밍 추세는 바로 코드의 재사용성으로 인한 생산성의 극대화에 있다. 그럼으로 인해 기존의 특정한 목적으로 개발한 루틴을 새로운 프로젝트 개발에 이용하는 것은 개발 기간을 단축시킬 수 있을 뿐만 아니라 개발 단계에 있는 모든 작업의 표준화를 이룰 수 있다. 델파이의 VCL은 이러한 재사용의 극대화를 이룰 수 있는 대표적인 도구이다. 자주 사용하는 루틴이나 모듈을 다음 개발시에 또 다시 제작하게 된다면 개발에 필요한 시간과 제품의 사이클은 필요 이상으로 증가하게 될 것이고, 이것은 개발이 반복됨에 따라 더 많은 개발 인원과 개발 시간을 요구하게 될 것이다. 소프트웨어의 개발의 주목적은 사용자에게 좀 더 빠르고 편리하게 사용할 수 있는 환경을 제공하는 것이라 할 수 있다. 때문에 제작 과정도 이러한 방법을 도입하는 것이 효율적이다.
그러나 객체 지향적인 프로그래밍의 최대 걸림돌은 바로 코드의 양이 증가한다는 것이다. 이것은 프로그램이 실행되는 속도에도 영향을 미치게 되는 결과가 생긴다. 객체 지향적인 프로그래밍이 반드시 만능이라고는 할 수 없는 것이 바로 이러한 이유때문이다. 하지만 실행 속도의 문제는 점차 해결되리라고 생각된다. 최근의 하드웨어의 개발 추세는 소프트웨어의 개발 속도만큼이나 빠르게 진행되고 있다. 이로 인해 과거에 비해 엄청난 양의 코드가 추가되고 프로그램의 크기가 커졌지만 실행 속도가 오랜 기간동안 문제로 지적되는 일이 적다. 코드에서 추가된 부분이 많아졌기 때문이다.
객체 지향적인 프로그래밍을 이루는 구성요소에는 상속성, 캡슐화, 다향성이 있는데
다향성은 기본적인 객체에서 분리된 여러 개의 객체가 기본적으로 갖는 속성 이외에 개별적으로 독특한 반응을 나타낼 수 있는 속성을 말한다.
예를 들어 TgraphicControl을 기본 클래스로 하는 하위 객체들은 기본적으로 상위 객체의 특성을 갖고 있다. 또한 이러한 객체의 특성으로 인해 저마다 독특한 메소드와 프로퍼티를 갖고 있다. 이것은 하나의 객체에서 파생된 특성을 갖는 동시에 개별적으로 다르게 반응하는 결과를 가져오게 된다. 델파이의 컴포넌트를 자세히 살펴보면 오브젝트 인스펙터에서 각각의 컴포넌트마다 공통적으로 나타나는 프로퍼티를 볼 수 있을 것이다. 이것이 바로 공통적인 요소인 것이다. 그리고 내부적으로 사용하는 메소드를 비교해 보면 다르게 나타나는 것을 볼 수 있습니다. 델파이 컴포넌트의 가장 기초가 되는 것은 바로 TObject이다.
> 델파이 객체지향에 대해서 아무거나 좀 글좀 올려 주세여..
>
> 부탁드립니다...
그런거는 일반 책을 보면 알건데.... 이런 얘기 하기 그런데 혹시 델파이 책이 한권도 없나요? 아님 인터넷이라도 찾아 봤나요? 그냥 저의 소견은 이렇습니다.
qna 라는 곳이 어떤 프로그램을 자신의 노력으로 하다가 막히였거나 어떻게 손을 대야할지 모를 경우 다른 프로그래머와 그 문제를 해결하면서 자신의 실력을 키워 나갈수 있는 장소라고 생각을 합니다. 제가 생각하는 qna는 누군가의 숙제나 또는 프로그램 개발또는 워드쳐주는 곳은 아니라고 생각을 합니다. 너무나 쉽고 델파이를 만난 초보면 답변 할수 있는 질문에 잠시 흥분을.......
그래도 이곳에 오신이상 답변은 하것습니다.
-----------------------------------------------------------------------
객체 지향적인 프로그래밍이란?
객체 지향적인 프로그래밍이라는 것은 어떤 것인가? 이것을 한 마디로 요약하면 인간적인 프로그래밍이라고 할 수 있다. 한가지 예를 들면 간단한 슈팅 게임을 만든다고 할 때 프로그래머는 사용자, 즉 플레이어의 관점에서 프로그래밍을 할 것입니다. 이 경우 기존의 방식 즉, 객체 지향적이 아는 방법으로 프로그램을 만든다면 플레이어가 발사하는 미사일이 적국 객체에 도달했을 때 이것을 처리하는 방법은 상당히 복잡해지게 된다. 이유는 플레이어는 하나의 관점에서 여러 개의 적국 객체를 상대해야 하기 때문에 일일이 경우의 수를 들어 각 적군 객체에 대한 모든 처리 방법을 기술하고 나열해 주어야 한다. 이 경우 같은 내용의 루틴들이 난무하고 코드가 복잡해질 뿐만 아니라 버그가 존재할 가능성마저도 내포하고 있을 수 있다. 때문에 프로그램을 성공적으로 완성했다 하더라도 유지, 보수 뿐만 아니라 실제적인 샐행면에서 많은 부하가 걸리게 될 것이다. 그렇지만 이 곳에 객체 지향적인 요소를 도입할 경우에 사정은 달라진다. 이럴 경우에는 플레이어의 관점에서 프로그램을 만드는 것이 아니라 적군 객체의 관점에서 프로그램을 만들게 된다. 때문에 적군 객체는 자발적으로 행동을 할 수 있으며 플레이어는 일일이 적국 객체에 대한 처리를 하지 않아도 된다. 바로 이런 것이 객체 지향적인 프로그래밍이라 한다.
만약 복잡하고 심도 있는 윈도우 프로그래머가 되지 않는다면 객체 지향적인 프로그래밍은 필요가 없을지도 모른다. 그러나 프로그래밍을 하겠다고 결심한 이상 객체 지향적인 프로그래밍에 대한 개념 정도는 이해할 수 있어야 한다.
객체 지향적인 프로그래밍은 코드를 쉽게 쓸 수 있도록 하는 것이라기보다는 쉽게 사용할 수 있도록 유지시켜 주는 것을 의미한다.
객체 지향적인 프로그래밍은 다음과 같은 장점과 단점을 동시에 가지고 있다. 이러한 장점과 단점은 객체 지향적인 프로그래밍의 특성을 쉽게 이해할 수 있다.
객체 지향적인 프로그래밍의 가장 큰 장점으로 코드의 재 사용성을 들 수 있다. 최근의 프로그래밍 추세는 바로 코드의 재사용성으로 인한 생산성의 극대화에 있다. 그럼으로 인해 기존의 특정한 목적으로 개발한 루틴을 새로운 프로젝트 개발에 이용하는 것은 개발 기간을 단축시킬 수 있을 뿐만 아니라 개발 단계에 있는 모든 작업의 표준화를 이룰 수 있다. 델파이의 VCL은 이러한 재사용의 극대화를 이룰 수 있는 대표적인 도구이다. 자주 사용하는 루틴이나 모듈을 다음 개발시에 또 다시 제작하게 된다면 개발에 필요한 시간과 제품의 사이클은 필요 이상으로 증가하게 될 것이고, 이것은 개발이 반복됨에 따라 더 많은 개발 인원과 개발 시간을 요구하게 될 것이다. 소프트웨어의 개발의 주목적은 사용자에게 좀 더 빠르고 편리하게 사용할 수 있는 환경을 제공하는 것이라 할 수 있다. 때문에 제작 과정도 이러한 방법을 도입하는 것이 효율적이다.
그러나 객체 지향적인 프로그래밍의 최대 걸림돌은 바로 코드의 양이 증가한다는 것이다. 이것은 프로그램이 실행되는 속도에도 영향을 미치게 되는 결과가 생긴다. 객체 지향적인 프로그래밍이 반드시 만능이라고는 할 수 없는 것이 바로 이러한 이유때문이다. 하지만 실행 속도의 문제는 점차 해결되리라고 생각된다. 최근의 하드웨어의 개발 추세는 소프트웨어의 개발 속도만큼이나 빠르게 진행되고 있다. 이로 인해 과거에 비해 엄청난 양의 코드가 추가되고 프로그램의 크기가 커졌지만 실행 속도가 오랜 기간동안 문제로 지적되는 일이 적다. 코드에서 추가된 부분이 많아졌기 때문이다.
객체 지향적인 프로그래밍을 이루는 구성요소에는 상속성, 캡슐화, 다향성이 있는데
다향성은 기본적인 객체에서 분리된 여러 개의 객체가 기본적으로 갖는 속성 이외에 개별적으로 독특한 반응을 나타낼 수 있는 속성을 말한다.
예를 들어 TgraphicControl을 기본 클래스로 하는 하위 객체들은 기본적으로 상위 객체의 특성을 갖고 있다. 또한 이러한 객체의 특성으로 인해 저마다 독특한 메소드와 프로퍼티를 갖고 있다. 이것은 하나의 객체에서 파생된 특성을 갖는 동시에 개별적으로 다르게 반응하는 결과를 가져오게 된다. 델파이의 컴포넌트를 자세히 살펴보면 오브젝트 인스펙터에서 각각의 컴포넌트마다 공통적으로 나타나는 프로퍼티를 볼 수 있을 것이다. 이것이 바로 공통적인 요소인 것이다. 그리고 내부적으로 사용하는 메소드를 비교해 보면 다르게 나타나는 것을 볼 수 있습니다. 델파이 컴포넌트의 가장 기초가 되는 것은 바로 TObject이다.
-----------------------------------------------------------------------------
이것으로 마치겠습니다. 자세한 것은 책을 찾아보심이 어떨런지....