Идеи объектно-ориентированного программирования Delphi
Лю Ичжу
Предисловие
Впервые я познакомился с Delphi не из-за программного обеспечения Delphi компании Borland, а потому, что прочитал это слово в классическом произведении Платона «Диалоги Платона» «Защита».
Мой друг пошел.
В Дельфах живет оракул, бог пророчеств. В «Диалогах Платона» записано, что друг Сократа отправился в Дельфы, чтобы спросить Пифиану, богиню пророчества, кто был мудрейшим человеком. Пифийцы говорили, что нет никого мудрее Сократа. Сократ был глубоко озадачен, поскольку оказался в окружении политиков, поэтов, философов и художников. Разве эти «эксперты» и «авторитеты» не мудрее? Я намного хуже их.
Сократ посещал этих «экспертов» и «авторитетов» одного за другим, но обнаружил, что они часто были самодовольны, обманывали себя и притворялись, что знают то, чего не понимали. Во время визита Сократ также обнаружил, что во многих аспектах он знает очень мало. Но Сократ не делал вид, что понимает, он сознавался в своем невежестве. Это то, что Пифиан, богиня пророчества, называет истинной «мудростью».
На самом деле, такого рода мудрость впервые была предложена не древними греками. Задолго до Сократа это уже подвел наш отечественный Лао-цзы. В Дао Дэ Цзин сказано: «Тот, кто знает других, мудр, и тот, кто знает себя, мудр. Вот что это значит».
Теперь Delphi, который мы используем, уже является отличным языком программирования и инструментом разработки программного обеспечения. Однако, столкнувшись с глубокой и постоянно развивающейся Delphi, мы по-прежнему очень мало знаем о многих аспектах. Но обладаем ли мы при изучении и использовании Delphi сократовским отношением к самопознанию и мудростью знания всего?
Многие друзья выбирают Delphi. Первая мысль может заключаться в том, что Delphi мощный, простой в освоении и использовании. Они даже заявили, что освоили Delphi за три месяца, а за полгода осмелились самостоятельно разработать программное обеспечение. Фактически, все, что они могут сделать, это перетаскивать элементы управления. Когда они опьянены собственными программами, они на самом деле опьянены изысканной мудростью Delphi и контролем других людей. Такого рода программистов Delphi другие часто называют «прокрастинаторами». Но они, похоже, считают себя мастерами Delphi.
Есть также много друзей, которые отказались от Delphi. Первая мысль может заключаться в том, что они думают, что Delphi — это просто инструмент RAD, похожий на VB. По их мнению, Delphi — это всего лишь управляющее программирование, и он не может по-настоящему реализовать ООП, как C++ или Java. Они сомневаются, обладает ли Delphi характеристиками объектно-ориентированного языка программирования и может ли он реализовать объектно-ориентированные технологии, такие как полиморфизм и шаблоны. По их мнению, настоящими мастерами являются только те, кто использует C++ или Java.
Итак, что же такое настоящий мастер и как им стать?
Во-первых, давайте посмотрим, что такое мастер боевых искусств, возможно, мы сможем черпать из этого вдохновение.
Любой, кто любит боевые искусства или романы о боевых искусствах, знает, что есть два способа заниматься боевыми искусствами: внешнее обучение и внутреннее обучение. Внешняя тренировка кулаков, ударов ногами и оружием, качество кулаков, ударов ногами и оружием – это ключ к внутренней тренировке Ци, тренировка очищения Ци, тренировка духа и возвращения слабости – это основа; Самая большая разница между этими двумя методами выращивания заключается в функциональной взаимосвязи между временем и навыками, как показано на рисунке 1. С точки зрения непрофессионала, в первые 3 года те, кто практикует внешние навыки, могут легко победить тех, кто практикует внутренние навыки; на 10-м году обе стороны могут сыграть вничью только через 15 лет, независимо от того, как вы практикуете внешние навыки; вы не сможете конкурировать с теми, кто практикует внутренние навыки. 20 лет спустя мастер внутренней силы непобедим в мире. Причина кроется именно в диалектическом отношении между «ци» и «ци».
«Оружие» — это материальные предметы, а мечи, ружья, шпаги и алебарды — все это осязаемое оружие. Занятия боевыми искусствами на открытом воздухе неотделимы от этого материального оружия. Занятия боевыми искусствами — это тренировки с оружием. Поэтому мастера боевых искусств, использующие огнестрельное оружие и мечи, часто полагаются на качество оружия.
«Ци» — это невидимая субстанция, и вся мудрость, магическая сила и мысли — это невидимые субстанции. Внутреннее развитие цигун неотделимо от этих нематериальных качеств. Практика цигун — это тренировка ци. Поэтому истинным мастерам боевых искусств часто не нужно полагаться на конкретное оружие. Для них любой материальный предмет можно превратить в оружие по духу. Складной веер или метелка в его руке столь же мощны, как знаменитое копье или меч, что связано с получением Ци.
Рисунок 1. Диаграммы функций времени и навыков для двух методов выращивания.
В разработке программного обеспечения инструменты программирования — это «инструменты», а идеи программирования — это «ци».
Среди инструментов программирования — простые в использовании инструменты, такие как VB и PB; сложные в использовании инструменты, такие как ассемблер и древние инструменты C++, такие как FORTRAN и COBOL, и модные инструменты, такие как Java и C#;
В программном мышлении различают объектно-ориентированное и процессно-ориентированное, которые являются одновременно мировоззренческими и методологическими. Первое отражает то, как люди думают об объективных объектах, а второе — то, как машины думают об инструкциях. В непрерывной практике разработки программного обеспечения превосходство первого постоянно отражалось и подтверждалось.
Освоение идей объектно-ориентированного программирования похоже на постижение истинного смысла тренировки Ци. Его важность часто превосходит выбор языка программирования!
Даже если кто-то выберет объектно-ориентированные инструменты, он все равно не сможет стать настоящим мастером. Потому что он ценит качество «ци» и игнорирует развитие «ци».
Фактически, «неважно, является ли система или язык объектно-ориентированным. Важно то, как она может быть объектно-ориентированной и какие методы используются для достижения соответствующих преимуществ». («Объектно-ориентированный метод: принципы и практика», Machinery Industry Press, март 2003 г.)
Хотя тренироваться с оружием легко, стать мастером сложно. Хотя тренировка Ци хороша, результаты медленны, а одиночество невыносимо. Обычные люди не могут ясно понять свои мысли и выбрать правильный путь. Поэтому многие мастера боевых искусств сначала практикуют оружие, а затем Ци. Для достижения успеха они тренируются как внутри, так и снаружи.
Новичкам в мире боевых искусств необходимо использовать мощь оружия, чтобы компенсировать недостаток внутренней силы. Качество оружия часто очень важно. Но по мере развития боевых искусств и развития внутренней силы зависимость от оружия должна уменьшаться. «Легенда о героях Кондора» Ян Го практикует фехтование. Когда он впервые учится, ему нравится использовать острые мечи. После того, как он станет опытным в фехтовании, он любит использовать тупые мечи. После того, как он овладеет своими внутренними навыками, ветви деревьев также могут. использовать как мечи. Так что для настоящих мастеров качество меча часто не имеет значения.
Точно так же рост мастеров программного обеспечения также проходит через этот процесс. Начинающим программистам необходимо выбрать хороший язык, на котором можно добиться удвоенного результата, прилагая вдвое меньше усилий, одновременно стимулируя интерес и повышая уверенность. Ознакомившись с языком, вы должны использовать его как возможность освоить идеи объектно-ориентированного программирования. В это время то, с чем вы знакомы, это уже не грамматика, функции и библиотеки классов самого языка, а методы мышления, такие как связывание, полиморфизм, шаблоны и т. д., и тогда по аналогии нетрудно выучить другие объектно-ориентированные языки. Настоящие мастера программного обеспечения, которые усердно работают над своими внутренними навыками, имеют смелость практиковаться и в конечном итоге добиваются успеха, не ограничены языками программирования. Они могут быть знакомы со средством разработки, но это всего лишь инструмент, несущий в себе их невидимый дух. Они открыты, стремятся учиться и хорошо умеют подводить итоги. Их идеи, методы, модели и даже философия не только выходят за рамки языков программирования, но и могут служить руководством для практики языков программирования.
Delphi обеспечивает кратчайший путь для роста мастеров программного обеспечения как внутри компании, так и за ее пределами. Изучая и практикуя Delphi, вы можете использовать его преимущества RAD и контроля, чтобы быстро побеждать своих противников, когда вы только начинаете. Когда вы изучаете и практикуете Delphi, вы также можете использовать его возможности ООП, силу VCL и силу; бекона, чтобы добиться непобедимого успеха.
Всемирно известная секта меча Хуашань когда-то была разделена на «секту меча» и «секту Ци». Первая практиковала только оружие и обучала движениям; вторая также практиковала Ци и восстановила фундамент.
Изучение Delphi похоже на практику фехтования Хуашань. Пройти путь RAD — «Мастер меча», а начать с ООП — «Мастер воздуха». Первый любит использовать элементы управления и интересуется странными приемами и трюками, второй любит объекты и шаблоны методов; Первый гонится за быстрыми результатами, а второй преследует высокие цели.
Я думаю, что друзья, которые выбирают Delphi для RAD или отказываются от Delphi из-за ООП, не очень понимают Delphi. Delphi — хорошее программное обеспечение для разработки RAD, но трудно стать настоящим мастером, не изучив ООП и не углубляясь в VCL. Точно так же Delphi является подлинным инструментом ООП-программирования. В сочетании с мощным RAD и эффективным компилятором Delphi он может иметь больше преимуществ и более высокую эффективность, чем другие языки ООП. Если мы сможем сломать сектантские взгляды, практиковать «ци» и «ци» вместе, практиковать как внутреннюю, так и внешнюю, я считаю, что программистам на Delphi не составит труда вырасти из RAD-быстрохода до мастера ООП и, в конечном итоге, стать мастером ООП. гордиться миром и доминировать над миром.
Ранее я кратко обсудил диалектические отношения между «Ци» и «Ци». В программировании одним из ключей к развитию и совершенствованию внутренней силы является овладение идеей объектно-ориентированного программирования. На самом деле, я думаю, что объектно-ориентированное программирование больше всего соответствует красоте невидимой истины дороги.
Почему ты так говоришь? «Великая трансформация древних времен рождается вместе с невидимым» (вторая реакция в «Гуйгузи»). Тайна Ци прежде всего заключается в ее «великой трансформации». Великое изменение – это великое творение неба и земли, которое собирает в себе всю силу созидания и изменения. Объектно-ориентированное программистское мышление обладает этим качеством.
Лао-цзы сказал: «Безымянное начало неба и земли — это имя матери всех вещей». «Безымянное» означает неописуемое и неопределимое. Самое загадочное в так называемом объектно-ориентированном мышлении — это то, как идентифицировать и определять объекты из «безымянных», а также как конструировать и использовать объекты из «именных».
Для разработчиков программного обеспечения процесс понимания объективных сущностей, анализа и проектирования потребностей пользователей — это процесс обнаружения и определения объектов, и это процесс от безымянного к известному. Однако объекты здесь отличаются от переменных или функций в процессно-ориентированных процессах. Классы представляют собой абстрактные понятия, определяемые «имена» и являются основой объектов.
В результате Тай Чи породил Лян И, а Лян И породил Багуа. Через наследование и происхождение классов родились все вещи и сформировались системы.
Даже «инструмент» как инструмент объектно-ориентированного программирования также воплощает и несет в себе «ци» идей объектно-ориентированного программирования.
Первое предложение в первой главе «Чжоу И Шэнь Тонг Ци», классического труда по тренировке внутренней энергии, известного как «Сутра короля вечной алхимии», звучит так: «Вселенная — это врата И, родителя всех гексаграмм». . Кан Ли Куан Го, главная ось узла движения, женщина. Четыре гексаграммы Му считаются «Пу».
С точки зрения разработки программного обеспечения, хотя инструменты объектно-ориентированного программирования предоставляют возможность создания бесконечных видов программных систем, эта бесконечность строится в ограниченных рамках собственной библиотеки классов. Будь то VCL Delphi, библиотека классов Java или платформа .net, все они построены на основе структуры, похожей на Zhouyi Bagua. «Освоить Тай Чи легко: Тай Чи производит два ян, два ян создают четыре образа, а четыре образа создают багуа. Эта структура безупречна и обладает бесконечной креативностью».
Тайцзи — это TObject в Delphi, это атом строительной системы, это предок всех классов, он обладает базовыми характеристиками всех классов. В мире программирования Delphi корневой класс TObject генерирует постоянный класс объектов TPersistent, а постоянный класс объектов TPersistent генерирует класс компонентных объектов TComponent, который предоставляет широкие возможности управления и мощные функции для разработки приложений.
Однако структурная основа библиотеки классов не только дает нам компоненты, которые можно использовать в качестве «инструментов», но, что более важно, эта структура реализует построение и изменение «ци» через отношения и связанные функции между классами, отражающие объектно-ориентированные функции. ориентированное. Сущность программирования мышления. Предоставляет нам отличную демонстрацию создания собственных систем.
Вторая загадка Ци заключается в ее «невидимом происхождении». Невидимость означает ее свободу, открытость и адаптивность. Идея объектно-ориентированного программирования полна невидимой мудрости «ци».
Например, полиморфизм в объектно-ориентированном программировании позволяет программистам писать более универсальные и открытые программы. Программисты могут написать чисто виртуальный абстрактный метод Stop() для объекта Vehicle. Такой универсальный метод Stop() не имеет никакого отношения к тому, на каком автомобиле ездят. Программисты могут позволить производным классам беспокоиться о завершении метода stop() и продолжать писать свои собственные общие процедуры на более высоком уровне абстракции. Даже если метод stop() объекта Car полностью отличается от метода stop() объекта Bicycle, программист также может использовать Vehicle.stop(). Полиморфизм позволяет созданному объекту автоматически знать, какой соответствующий метод будет вызван. . Это придает программе открытость и адаптируемость «ци».
В практике цигун подчеркивается, что «высшая добродетель — это бездействие, и ее не ищут посредством наблюдения. Низшую добродетель практикуют, и она будет использоваться бесконечно («Чжоу И Шэнь Тонг Ци»).
В понимании объектно-ориентированного программирования «Шандэ» — это чистый виртуальный абстрактный метод позднего связывания, объектный интерфейс, который остается неизменным и адаптируется к постоянно меняющимся изменениям, это высокая степень абстракции вещей и метафизика. . «Шандэ Увэй» означает, что на абстрактном уровне «виртуальная» сторона программирования отражается через бездействие, поскольку в это время фактически используемый реальный объект не может быть определен (это может быть объект «Автомобиль», объект «Велосипед» или может быть изобретено позже) Новый транспортный объект), «не основанный на наблюдении», требует от нас выпрыгнуть из ограничений конкретных потребностей и не рассматривать конкретный код реализации. Следовательно, реализация кода в чисто виртуальных абстрактных методах или объектных интерфейсах невозможна.
В понимании объектно-ориентированного программирования «Сяодэ» относится к чисто виртуальным абстрактным методам и реализации объектных интерфейсов. «Делай это с моралью» обеспечивает реальную реализацию кода. «Он используется бесконечно» для удовлетворения постоянно меняющихся потребностей.
Полиморфизм позволяет программистам получать объекты и реализовывать программы позже без особых усилий. Не имеет значения, если программист создает приложения для автомобилей и велосипедов и не знает о существовании грузовиков. Программисты могут писать переопределяющие методы stop() для классов Car и Bicycle, которые наследуют класс Vehicle. Таким образом, в программе, пока созданные объекты «Автомобиль» и «Велосипед» преобразуются в тип «Транспортное средство» и используется метод Stop() транспортного средства, объекты «Автомобиль» и «Велосипед» могут быть динамически привязаны к методу stop(). метод, отвечающий их собственным требованиям. Даже если объект Truck будет добавлен позже, метод Stop() объекта Vehicle все равно будет вызываться, и никаких дальнейших изменений в программе не потребуется.
«Вещи естественны, и вещи соединяются и разделяются. Некоторые из них близки, но их нельзя увидеть, а некоторые далеко, и их можно познать. Те, что близко, но нельзя увидеть, невозможно понять; те, что далеко, можно увидеть. , но их можно будет увидеть в будущем." ("Гигузи") Прибудут четвёртыми)
Хотя объективные вещи сложны и потребности пользователей меняются, существуют и определенные внутренние законы.
Те, кто близки, но невидимы, смотрят только на реализацию конкретных функций перед собой и не наблюдают общих законов развития вещей. У них в сознании есть лишь отдельные данные и механические процессы. Как только «вещи сойдутся», они сойдутся. быть застигнутым врасплох, и вам будет трудно с этим справиться. Такое программирование является статическим, механическим, его трудно поддерживать и расширять.
Те, кто может видеть на расстоянии, хорошо обнаруживают закономерности, ценят повторное использование кода и видят органичные объекты и гармоничные отношения. Даже если потребности меняются, они могут спокойно и легко с ними справиться. Такое программирование является динамичным, гибким, поддерживаемым и расширяемым.
Пол Киммел сказал в «Руководстве по разработке приложений Delphi6»: «Использование объектно-ориентированных инструментов необъектно-ориентированным способом является ошибкой. Использование Delphi для написания структурированных программ может быстро достичь бета-версии... Ваша программа может никогда не быть способно выйти из бета-версии. Быстро получите неверный ответ и все равно ошибетесь».
Также при использовании Delphi, если нет идеи объектно-ориентированного программирования, это будет похоже на «не замечать того, что говорят». В конце концов, это все равно будет «близко, но невидимо», что затрудняет разработку превосходной системы. Только усердно практикуясь, тщательно обобщая и овладевая широкими и глубокими идеями объектно-ориентированного программирования, мы сможем свободно контролировать нашу «ци», «обратить вспять то, что мы узнали, то, что мы узнали» и, наконец, достичь состояния «знания того, что далеко».
Прошло более 30 лет с момента появления первого по-настоящему объектно-ориентированного языка Smalltalk (1972). Однако большинство книг по объектно-ориентированному программированию в книжных магазинах — это C++ и Java. Кажется, существуют только эти два объектно-ориентированных языка. На самом деле существует 4 основных ветви реальных объектно-ориентированных языков и около 20 их разновидностей. . Поскольку книг по объектно-ориентированному программированию на Delphi очень мало, многим программистам приходится отказываться от Delphi, чтобы изучать ООП. Это действительно великая трагедия Дельфи. Когда я читал «Мышление на Java» Брюса Экеля, я сокрушался, почему нет такого шедевра на Delphi?
На самом деле Delphi принадлежит к известному семейству. Он был разработан компанией Borland на основе Object Pascal. Теперь компания Borland использует язык Delphi для замены Object Pascal [1], начиная с Delphi7. Delphi фактически не уступает C++ и Java с точки зрения ООП. Читатели могут обратиться к приложению к этой книге «Сравнение языков объектно-ориентированного программирования: Java, C++ и Delphi».
С этой целью я всегда планировал написать книгу об объектно-ориентированном программировании на Delphi, чтобы обобщить мои знания и практический опыт в объектно-ориентированном программировании на Delphi. Однако это очень сложная задача: от замысла до написания книги потребовалось много времени, и она была официально завершена только в мае этого года. Так уж получилось, что в этом году исполняется 20 лет со дня основания Borland. Как пользователя продукта Borland Delphi, публикацию моей книги можно рассматривать как ознаменование этого.
В этой книге обсуждается исключительно объектно-ориентированное программирование в Delphi. Объектно-ориентированное программирование — это не модное украшение этой книги, а ее ядро и цельность.
Начиная с главы 1 «Становление нового объектно-ориентированного мышления», эта книга пытается начать с истории и современной ситуации объектно-ориентированного программирования, раскрывая происхождение, развитие и основные концепции идей объектно-ориентированного программирования, а также применение методов объектно-ориентированного моделирования и UML. Цель этой главы – помочь читателям установить основные понятия объектно-ориентированного мышления и понять метод объектно-ориентированного мышления.
Глава 2 «Объектная модель Delphi» знакомит с базовыми знаниями об объектно-ориентированном программировании Delphi и системе структуры его объектной модели.
В главе 3 «Понимание объектов» внутренний механизм, жизненный цикл и взаимодействие объектов подробно обсуждаются с трех аспектов: природа, жизнь и смерть, а также взаимоотношения объектов, закладывая читателям основу для понимания и освоения объектов.
Глава 4 «Использование объектов» объясняет, как эффективно использовать объекты в объектно-ориентированном программировании Delphi. Здесь мы фокусируемся на методах и приемах использования объектов интерфейса, объектов-компонентов, наборов объектов и параметров объектов, а также глубоко размышляем над общими проблемами использования и разработки компонентов VCL.
Глава 5 «Углубленный полиморфизм» знакомит с концепцией полиморфизма и ее применением в программировании. С помощью большого количества примеров объясняются важные концепции и методы мышления, такие как перегрузка и перезапись, виртуальные методы и динамические методы, абстрактные классы и абстрактные методы, а также преобразование типов классов.
Глава 6 «Анализ интерфейсов» всесторонне знакомит с знаниями программирования и навыками применения объектных интерфейсов. В нем объясняется важная роль интерфейсов в реализации динамического связывания и множественного наследования, а также демонстрируется фактическое использование интерфейсов в объектно-ориентированном программировании.
Глава 7 «Исследование инкапсуляции» разъясняет важность и принципы применения инкапсуляции в объектно-ориентированном программировании, а также обсуждает методы реализации и техники применения инкапсуляции с точки зрения логической инкапсуляции и физической инкапсуляции соответственно.
Глава 8 «Реализация разделения интерфейса и бизнеса» выводит объектно-ориентированное программирование на новый уровень. В этой главе объясняется, как использовать объектно-ориентированное проектирование для превращения настольной программы в распределенную многоуровневую систему посредством эволюционного примера разделения интерфейса и бизнеса. В сочетании с новейшими веб-технологиями Delphi он знакомит с тем, как использовать веб-службу для инкапсуляции бизнес-объектов, использовать веб-форму для инкапсуляции объектов интерфейса и использовать новые технологии для инкапсуляции старых объектов, тем самым реализуя кроссплатформенные приложения.
Наконец, главы 9 и 10 этой книги, «Углубленное введение в VCL», изучают внутренний механизм VCL и анализируют использование объектов важных категорий VCL, предоставляя справочную информацию для читателей, которые хотят улучшить свой уровень программирования. глубина.
Судя по структуре книги, ее можно разделить на пять частей.
Часть 1, первые две главы книги представляют собой введение в объектно-ориентированное программирование Delphi. Читатели, уже освоившие основные концепции объектно-ориентированного программирования и имеющие опыт программирования на Delphi, могут пропустить эти две главы.
Часть 2, главы 3 и 4 являются ключом к объектно-ориентированному программированию в Delphi. Если вы не уловите суть объекта, вы не сможете его хорошо использовать.
Часть 3, главы 5 и 6 представляют собой углубленное введение в объектно-ориентированное программирование в Delphi. Все продвинутые объектно-ориентированные методы основаны на механизмах динамического связывания, таких как виртуальные методы, абстрактные методы и интерфейсы объектов, а также на механизмах преобразования типов, таких как восходящее преобразование, нисходящее преобразование и преобразование интерфейса.
Часть 4, главы 7 и 8 посвящены применениям объектно-ориентированного программирования Delphi. Для достижения удобства сопровождения, масштабируемости и возможности повторного использования программы инкапсуляция стала одной из важных идей объектно-ориентированного программирования. Посредством инкапсуляции интерфейс и бизнес-объекты разделяются, и распределенная многоуровневая архитектура постепенно реализуется за счет разделения интерфейса и бизнеса, а затем реализуется кроссплатформенность интерфейса и бизнес-приложений. Здесь демонстрируются решения от общих приложений до приложений уровня предприятия, основанные на идеях объектно-ориентированного программирования.
Часть 5, завершающая главы 9 и 10, представляет собой ссылку на объектно-ориентированное программирование в Delphi. Знакомство с VCL и изучение VCL очень полезны для освоения Delphi. Ввиду текущего отсутствия инсайдерской информации о VCL, то, что эта часть предоставляет читателям, может быть ограничено, но это редкость.
Если быть точным, эта книга написана не для «экспертов», а для программистов, желающих перейти от RAD к ООП, и для друзей, желающих изучить ООП через Delphi. Я думаю, что это больше подходит в качестве практической технической книги по Delphi среднего уровня. Поэтому при написании всей книги мы стремимся к тому, чтобы она была простой для понимания, с картинками и текстами, а большое количество примеров программ (исходный код на прилагаемом к книге компакт-диске превышает 50 МБ) тщательно написано для читателям учиться. В этой книге основное внимание уделяется основным аспектам ООП, а не всем аспектам Delphi. Чтение этой книги требует определенных базовых знаний Delphi. Книга предполагает некоторые специальные знания (например, COM+ и т. д.) и требует от читателей обращаться к соответствующим книгам для получения дополнительной информации.
Возможно, найдутся «эксперты», которые будут разочарованы этой книгой. Я чувствую, что не подхожу для написания книги, которую будут читать «эксперты», потому что я не эксперт. Я чувствую, что всегда буду новичком. В отличие от других новичков, я использую Delphi дольше и имею немного больше опыта и опыта. Поэтому, если вы обнаружите в этой книге какие-либо неточности, пожалуйста, поправьте меня. Надеюсь, вы простите мне все неудовлетворительные моменты.
Пользователь сети xzh2000 хорошо выразил это: «Жизнь книги очень важна. Только если автор сможет уделять время ее частому пересмотру и дополнению, она сможет стать классикой!» Это правда, что хорошую книгу необходимо пересматривать много раз, прежде чем она сможет стать классической, поэтому я готов выслушать ценные предложения всех читателей и надеюсь, что эту книгу можно будет постоянно пересматривать и переиздавать.