서문: 현재 저는 숙련된 Delphi 프로그래머를 위해 Delphi에서 객체 지향 프로그래밍 기술을 사용하여 잘 설계된 프로그램을 구축하는 주제에 관한 책을 쓰고 있습니다.
이 책은 아직 집필 중인 단계입니다. 모든 사람이 이 책의 주제와 언어 스타일을 미리 이해할 수 있기를 바랍니다. 동시에 자신의 의견을 제시할 수도 있습니다. 저자로서 이 책이 중국 델파이 원작의 고전이 될 수 있기를 바라지만, 성공하지 못할 수도 있겠지만 최선을 다해 노력하겠습니다.
위의 이유로 인해 책 전체를 게시하는 것은 불가능합니다(하하, 그러면 아무도 사지 않을 것입니다). 따라서 여기에 후속 장을 게시하지 않아야 합니다(일부 발췌가 있을 수 있음).
여기에서는 저를 격려하고 의견을 주신 친구들에게 감사의 말씀을 전하고 싶습니다. (csdn의 델파이 포럼에 올렸고 많은 반응을 얻었습니다. 모두 감사합니다.) 또한 항상 저를 지지하고 영감을 준 여자친구 Esan에게도 감사의 말씀을 전하고 싶습니다. 내가 할 수 있는 일은 글을 잘 써서 모두에게 보답하는 것뿐이다. (나를 포함해) 모두가 좋은 책을 너무 애타게 기다렸다는 걸 안다!
1장 델파이의 재이해
단순함은 세상에서 가장 얻기 어려운 것입니다. 그것은 경험의 궁극적인 한계이자 천재의 궁극적인 목표입니다. ——George Sand 귀하는 이미 숙련된 Delphi 프로그래머이며 Delphi를 사용하여 아름답고 실용적인 프로그램을 신속하게 작성할 수 있습니다. Delphi는 귀하의 작업과 연구에 없어서는 안될 부분이 되었습니다. 나는 이것이 사실이라고 가정합니다. 그렇다면 Delphi를 첫 번째 개발 도구로 선택하는 자신만의 이유가 있어야 합니다. 적어도 위의 가정을 모두 충족합니다. 이제 제가 여러분과 나누고 싶은 것은 제가 델파이를 선택한 이유와 이유, 그리고 델파이에 대한 저의 이해입니다. 당신은 나를 델파이를 지지하는 광신자로 생각할 수 있지만, 그렇게 하면 당신이 나를 너무 피상적으로 본다는 느낌이 들겠지만, 나는 그것을 인정하지 않지만 상관하지 않습니다. 왜냐하면 나는 그녀를 정말 사랑하기 때문입니다. 제가 처음 접한 델파이 버전은 3.0이었습니다. 당시에는 Visual Basic과 같은 RAD 도구로만 사용했습니다. 하지만 시간이 지날수록 Delphi 3, Delphi 4, Delphi 5, Delphi 6, Kylix는 점점 더 델파이에 대한 이해가 깊어지고 있습니다. 비록 도구일 뿐이지만, 사람들이 그녀를 이해할수록 그녀에게 더 집착하게 되고 그녀와 떼어놓을 수 없는 존재감을 느끼게 되는 것은 풍부한 의미를 지닌 도구이다. 파스칼은 프로그램 미학에 주목한 언어입니다. 파스칼 코드가 가장 아름다운 코드임에는 의심의 여지가 없습니다. 오브젝트 파스칼(객체 지향을 지원하는 파스칼 언어) 기반의 델파이는 이러한 아름다움을 극한까지 끌어올렸습니다. 이제 Delphi를 열고 "Help" - "About" 메뉴를 선택한 후 About 창이 나타나면 Alt 키를 누른 채 "team"을 동시에 입력하면 무엇이 보이나요? 예, Delphi 개발자 목록입니다. 예술 작품에 더 가까운 개발 도구를 만들어 주신 분들께 감사드립니다!
1.1 개발 도구의 "사람 중심" 이론
다양한 프로그래밍 포럼에서 다음과 같은 질문을 자주 볼 수 있습니다. "VB에 아직 미래가 있습니까?", "델파이가 사라질까요?", "MFC가 .NET으로 대체될까요?"... 실제로, 이 질문이 제기되었을 때 아무도 답을 줄 수 없었습니다. 기술이나 제품의 미래는 전적으로 기술 자체에 의해 결정되는 것이 아니라, 시장 수요, 생산 기업의 개발 방향 등의 요인과도 연관되어 있기 때문입니다. 그리고 우리가 관심을 가져야 할 것은 이러한 질문에 대한 답입니까? 내 생각에는 그렇지 않다. 우리는 세상의 모든 것이 원자로 구성되어 있다는 것을 알고 있습니다. 끊임없이 변화하는 프로그램은 궁극적으로 시퀀스, 루프 및 분기의 세 가지 구조로 구성됩니다. VC의 MFC와 Delphi의 VCL은 모두 객체 지향 기술로 구축됩니다. 지향). 당신이 사물의 겉모습을 지나서 본 것은 동일하거나 유사한 본질이다! 본질을 익히고 나면 외모의 발현이 너무나 자연스럽다는 것을 알게 될 것입니다. Hou Jie("MFC 소개"의 저자)처럼 MFC를 완전히 떼어낼 수 있는데도 MFC가 특정 프레임워크로 대체되는 것에 대해 여전히 걱정하시겠습니까? 이러한 관점에서 전문 프로그래머에게 프로그래밍의 개념은 변함이 없습니다. 문제를 발견하고, 분석하고, 해결하는 과정에는 일정한 패턴이 있는데, 이 패턴을 익히고 나면 다양한 프로그래밍 언어와 다양한 개발 환경에는 공통점이 있을 것입니다. 저는 C++는 모든 전문 프로그래머가 마스터해야 할 것이라고 생각합니다. 물론 이는 단순히 구문을 학습한다는 의미가 아니라(일부 구문 학습은 무시할 수도 있음) C++를 통해 객체 지향 설계 및 프로그래밍 방법을 학습한다는 의미입니다. C++는 광범위하고 심오하며, C++는 전능하기 때문입니다. C++에서는 객체지향 이론의 모든 것을 배울 수 있습니다. 배우고 나면 C++로 변신하게 됩니다. 객체 지향 이론에 존재하는 논란의 여지가 있는 기능(예: 다중 상속)이 C++에서 지원되기 때문입니다. 당신이 그것을 숙달한 후에만 당신은 스스로 선택할 수 있습니다(찬성 또는 반대). C++, 오브젝트 파스칼, Java, C# 등 객체지향 이론을 익히면 유사성을 느낄 수 있습니다. 그렇다면 지원하는 언어를 제외하고는 개발 도구들 사이에 다른 차이점이 없다는 뜻인가요? 물론 그렇지 않습니다. 개발 도구는 기본 아이디어를 기반으로 구축된 상부 구조인 아이디어를 실현하는 데 도움이 되는 도구입니다. 개발 도구가 구현하려는 개념을 지원하는 정도와 구현 프로세스를 단순화하는 정도는 개발 도구에 대한 고려 사항입니다. 프로그래머를 위한 개발 도구는 군인을 위한 무기와 같습니다. 무기가 유용하지 않으면 전투 전에 절반이 패배하게 됩니다. 저는 항상 Nokia 휴대폰의 광고 슬로건을 좋아했습니다. 기술은 사람 중심입니다! 그렇습니다. "사람"이 기본이며 도구의 사명은 사람들이 목표를 더 빠르고 쉽게 달성하도록 돕는 것입니다. 그러므로 개발 도구 역시 사람 중심이어야 합니다! 프로그래머이자 개발 도구의 가장 직접적인 사용자로서 내가 사용하는 개발 도구가 진정한 파트너이자 보조자가 되기를 바랍니다. 이는 나에게 자유로움을 가져다 주고 코드의 세계를 자유롭게 탐색할 수 있게 해줄 수 있습니다. 나에게 족쇄를 씌우지 말고 나에게 적응해 보세요! 오늘날 Windows 플랫폼에는 Visual C++, Visual Basic, Delphi, C++ Builder, JBuilder 등 선택할 수 있는 많은 개발 도구가 있습니다. 이러한 도구는 다양한 프로그래밍 언어를 기반으로 하며 다양한 회사의 제품 개념을 충실히 따릅니다. 이러한 관점에서 볼 때 둘 사이의 차이는 매우 큽니다. 그렇다면 어떤 개발 도구가 우수하고, 사려 깊고, 사람 중심적일까요? 나의 기준은 다음 4가지 사항을 충족하는 것입니다. 1. 해결하려는 문제를 단순화하고 특정 개념으로 신속하게 구현할 수 있습니다. 2. 알고 싶은 세부 사항을 숨기지 마십시오. 3. 원하지 않는 세부 사항을 무시할 수 있습니다. 알다 4. 주도적으로 위의 4가지 사항을 충족하고 다양한 수준의 프로그래머에게 적합한 개발 도구가 있습니까? 내 대답은: 그렇습니다! 바로 델파이입니다! 그녀는 모든 것을 단순화했지만 내가 진리를 찾는 것을 결코 막지 않았습니다. 그녀가 구성한 단순화된 VCL 가상 세계에서 작업을 완료할 수 있습니다. 또한 VCL의 세계를 탐구하여 실제 세계(즉, Windows 플랫폼의 실제 인터페이스)와의 매핑 관계를 탐색하고 해당 프레임워크의 디자인을 배울 수 있습니다. 또한 필요에 맞게 가상 VCL 세계를 확장할 수도 있습니다. 이런 개발 도구가 있다는 것이 행운이라고 생각하며, 그녀를 선택하고 그녀와 함께 작업을 완료할 수 있다는 것은 더욱 행운입니다! (실제로 프로젝트에 사용되는 프로그래밍 언어와 개발 도구는 사용자가 통제할 수 없는 경우가 많으며 여러 요인에 의해 제한됩니다. 예를 들어 고객의 하드웨어 환경, 운영 체제 환경, 개발 환경, 개발 도구의 비용 및 라이선스 등이 있습니다. 따라서 개발 작업을 위해 내가 가장 좋아하는 개발 도구를 선택할 수 있다는 것은 매우 행운입니다.) C++를 통해 객체 지향 개념을 배우고 Delphi를 사용하여 실제 문제를 해결하는 것이 나의 접근 방식입니다. 동시에 어려운 곳에서 배우고, 쉬운 곳에서 적용하라는 말을 검증하기도 한다. 실제 프로그래머는 C++를 사용하고, 똑똑한 프로그래머는 Delphi를 사용합니다. 글쎄, 정말 똑똑한 프로그래머는 C++를 사용하여 Delphi를 이해합니다!
1.2 델파이의 더 많은 장점
저는 많은 주류 개발 도구를 사용해왔는데 왜 Delphi를 선택했습니까? 제가 다른 개발 도구에 깊이 익숙하지 않아서일지도 모르지만, 델파이 자체의 우수성은 적어도 그 이유 중 하나입니다! 델파이의 어떤 점이 그렇게 좋은가요? n 델파이의 효율적인 개발은 시각적 개발 환경을 갖춘 RAD(Rapid Application Development Tool)입니다. 물론 비슷한 기능을 가진 개발 툴(예: Visual Basic)이 많이 있지만 델파이에는 다음과 같은 고유한 기능이 있습니다. ) 델파이는 진정한 객체 지향적입니다. OO 기술을 기반으로 구축된 VCL 라이브러리의 모든 구성 요소는 폼 클래스 TForm을 포함한 새로운 구성 요소를 생성하기 위해 상속될 수 있습니다. 이와 대조적으로 ActiveX 구성 요소에는 이러한 유연성이 부족합니다. 2) Delphi의 CodeInsight 기술(즉, 코드 자동 완성 기능)은 컴파일러 정보를 기반으로 하는 반면 VB는 유형 라이브러리 정보를 사용하면 유연성이 더 높아집니다. 그러나 프로그래머들은 Delphi의 코드 프롬프트가 너무 오래 걸린다고 불평하는 경우가 많습니다. 사실 개인적으로 속도에 익숙해지면 리드미컬한 쾌감을 느낄 수 있다고 느낀다. n 효율적인 Delphi 언어는 Object Pascal 언어를 기반으로 합니다. 이것은 진정한 객체지향적이면서도 우아한 언어입니다. 기능적 무결성 측면에서는 다른 다양한 객체지향 언어에 비해 열등하지 않지만, 동시에 더 많은 것을 욕심내지 않고 맹목적으로 복잡성을 증가시킵니다. 이를 통해 개발자는 구현 중에 너무 많은 언어/컴파일러 세부 사항을 고려할 필요 없이 다양한 패턴을 사용하여 설계할 때 완전한 지원을 받을 수 있습니다. n 컴파일 효율성 델파이는 윈도우 플랫폼에서 가장 빠른 고급 언어 로컬 코드 컴파일러라고 할 수 있습니다. 빠른 컴파일의 이점은 무엇입니까? 빠른 컴파일러를 사용하면 코드 수정과 컴파일 및 실행 사이를 자주 전환할 수 있습니다. 적어도 나는 이런 작업 방식에 매우 익숙합니다. 프로그램을 실행하여 효과를 확인한 다음 프로그램을 종료하고 약간의 코드를 수정한 다음 프로그램을 실행합니다. 그리고 델파이의 컴파일러는 결코 나를 기다리고 있다는 느낌을 주지 않습니다. n 효율적인 실행 델파이는 컴파일 속도가 빠를 뿐만 아니라, 생성된 타겟 코드의 실행 효율성도 매우 높습니다. Delphi와 C++Builder는 동일한 백엔드 최적화 프로그램을 사용하므로 이에 의해 생성된 코드는 뛰어난 C++ 컴파일러에 의해 생성된 코드만큼 효율적입니다. Delphi는 완전한 네이티브 코드를 생성하므로 Delphi 컴파일로 생성된 실행 파일은 독립적으로 실행 및 배포될 수 있습니다(이는 "친환경 소프트웨어" 개발에 매우 중요합니다). 다른 런타임 지원은 필요하지 않습니다. 물론, 동적 링크 컴파일을 선택하면 실행 파일의 길이를 대폭 줄일 수 있지만, 이 경우 프로그램을 배포할 때 필요한 런타임 파일도 동시에 배포해야 합니다. n 효율적인 유지 관리 C++는 프로그래머에게 많은 의사 결정 권한을 제공하므로 매우 강력합니다. 그러나 동시에 C++를 사용하여 우수한 객체 지향 코드를 작성하려면 프로그래머에게 특정 자질이 필요합니다. 델파이 프로그래머는 어느 정도 VCL이 제공하는 프레임워크로 제한될 것입니다(물론 델파이에서는 VCL 프로그래밍을 없애는 것이 완전히 가능합니다). 상대적으로 말하면 잘 설계된 코드를 만드는 것이 더 쉽습니다. Visual Basic은 개체 지향 프로그래밍 메커니즘을 전혀 제공하지 않습니다(VB6.0 및 이전 버전은 개체 지향이 아닌 개체를 기반으로 함). 코드 프레임워크의 우수성은 소프트웨어 유지 관리 비용을 크게 줄여줍니다. 위의 모든 이유를 바탕으로 저는 Delphi를 선택했습니다!
1.3 이 책의 주제
우리는 일반적으로 회사, 우리 자신 또는 친구를 위해 많은 코드를 작성합니다. 때로는 아이디어를 검증하거나 특정 기술을 배우기 위해 실험적인 코드를 작성하기도 합니다. 이러한 코드의 수명주기는 매우 짧으며 기본적으로 유지 관리가 필요하지 않습니다. 하지만 정말로 프로젝트를 완성하고 싶다면 코드 디자인이 매우 중요합니다. 이러한 코드에는 장기적인 유지 관리, 지속적인 수정 또는 개선이 필요하기 때문입니다. 지저분한 코드 설계는 유지 관리를 어렵게 하거나 불가능하게 하며, 이러한 코드를 수정하면 더 많은 버그나 재난이 발생합니다. 따라서 코드를 작성하기 전에 먼저 설계해야 합니다. 여기서 언급하는 디자인은 기능적 디자인을 말하는 것이 아니라 프로그래머가 코딩하기 전에 코드 프레임워크를 디자인하는 것을 의미하므로 코드를 나중에 더 쉽게 이해하고 유지 관리할 수 있습니다. 프로그래머의 프로그램 수명은 고작 35세라는 말을 자주 듣습니다. 프로그래머의 수명이 35세에 불과하다고는 결코 믿지 않습니다. 어쩌면 35세 이후에는 구현 능력(실제로는 장인 능력)이 감소할 수도 있고, 경험이 쌓이면 설계 능력은 감소하지 않고 증가할 수도 있습니다. 이것이 가장 소중한 것입니다. 외국 소프트웨어 개발팀의 핵심은 일반적으로 40세 전후의 사람들입니다. 그들은 35세 이후에는 프로그래머가 될 수 없는 소위 프로그래머입니다. 소프트웨어 엔지니어링은 프로그래머를 코더로 전환하고 조립 라인의 연결 고리가 되어야 하며, 디자인 작업은 전문 디자이너(예: 프레임워크 디자이너)가 완료합니다. 분업을 세분화하는 추세인지도 모르지만, 코더로서 만족할 것인지 디자이너로 성장할 것인지는 우리의 비전과 노력에 달려 있습니다. 자신을 "마스터 달성"에 제한하고 탐닉하기보다는 시야를 넓히십시오. 깨달음 능력은 기본입니다. 그러나 그것은 필요조건일 뿐 충분조건은 아닙니다. 그렇지 않으면 산꼭대기에 올라 정상에 도달했다고 생각하고 정체된 것과 같을 것입니다. 그렇다면 당신은 코더만 될 수 있고 당신의 프로그램 수명은 고작 35년이다. 이러한 관점을 얻은 후, 이 책이 시작하는 데 도움이 되기를 바랍니다. 중국에서 출판된 델파이 관련 서적에서는 기본적으로 구현에 대해 설명하고 있습니다. 이 책의 제목은 "Breakthrough by Delphi Masters"입니다. 이제 당신이 델파이 마스터라고 가정해 봅시다. 따라서 이 책에서는 예제 코드가 있지만 구현이 아닌 아키텍처 설계에 중점을 두어 너무 많은 구현 기술을 다루지 않습니다. 이 시점에서 여러분은 이 책의 주제인 델파이에서 객체 지향 기술을 사용하여 잘 디자인된 코드를 작성하는 방법을 짐작했을 것입니다. 제 생각에는 코드 작성은 예술적 창작입니다. 우아한 코드는 과도한 주석이 필요 없이 자명합니다. 댓글이 너무 많으면 디자인이 합리적인지 생각해 볼 때입니다. 책을 쓰는 것도 예술적인 창작이어야 합니다. 너무 많은 "주석"(공간을 낭비하는 넌센스)을 필요로 하지 않고 자신의 이해와 경험을 예술적으로 전달할 수 있다면 매우 성공할 것입니다. 적어도 최선을 다해 할 수 있기를 바랍니다.
1.4 요약
나는 프로그래밍의 길을 택하는 것이 불가피하다고 믿습니다. 전문 프로그래머가 되는 것도 제가 꿈꾸고 실현한 일입니다. 하지만 델파이의 등장과 내가 알게 되고, 익숙해지고, 집착하게 되고, 내 작업의 일부가 된 것은 뜻밖의 놀라움이었다고 해야 할까. 여기서 내가 말하고 싶은 것은 자신에게 좀 더 집요해야 한다는 것이다. 당신이 자신의 위치를 명확하게 정하고 자신이 선택한 길을 명확하게 알면 더 이상 의심하거나 주저할 필요가 없고 계속 전진할 수 있습니다. 결국 성공하지 못하더라도(물론 성공에 대한 정의는 사람마다 다르지만) 나는 내가 좋아하는 일을 후회 없이 사랑한다!