Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Объектно Ориентированное Программирование. Настольная книга программиста

Покупка
Новинка
Основная коллекция
Артикул: 727390.02.99
Объектно Ориентированное Программирование (ООП) - технология, которую обязан знать, понимать и применять каждый современный программист. Печально, когда программисты не знают, не понимают и не применяют, а, что ещё хуже, - находятся в заблуждении, что знают, понимают и применяют. Прочитав эту книгу, вы узнаете всё, что надо знать об ООП и даже немного больше, чтобы использовать эту технологию в своей работе. Материал изложен в краткой, понятной форме по принципу "от простого к сложному" и сопровождается необходимыми примерами. Книга ориентирована на начинающих и опытных программистов, преподавателей и студентов вузов, колледжей, учителей и учащихся школ.
Гаско, Р. Объектно Ориентированное Программирование. Настольная книга программиста / Р. Гаско. - Москва : СОЛОН-ПРЕСС, 2021. - 298 с. - ISBN 978-5-91359-285-9. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2185401 (дата обращения: 21.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Серия «Программирование» 
 
Рик Гаско 
 
 
 
Объектно 
Ориентированное 
Программирование 
 
 
 
 
Настольная книга  
программиста 
 
 
 
 
 
 
 
 
 
СОЛОН-Пресс 
Москва 
2021 


УДК 681.3 
ББК 32.973-18 
     К 63 
 
Под редакцией Н. Комлева 
 
Рик Гаско  
    Объектно Ориентированное Программирование. Настольная 
книга программиста. — М.: СОЛОН-Пресс, 2021. — 298 с.: ил.  
 
ISBN 978-5-91359-285-9 
 
Объектно 
Ориентированное 
Программирование 
(ООП) 
— 
технология, которую обязан знать, понимать и применять каждый 
современный программист.  
Печально, когда программисты не знают, не понимают и не 
применяют, а, что ещё хуже, — находятся в заблуждении, что знают, 
понимают и применяют. 
Прочитав эту книгу, вы узнаете всё, что надо знать об ООП и даже 
немного больше, чтобы использовать эту технологию в своей 
работе. Материал изложен в краткой, понятной форме по принципу 
«от простого к сложному» и сопровождается необходимыми 
примерами.  
Книга ориентирована на начинающих и опытных программистов, 
преподавателей и студентов вузов, колледжей, учителей и учащихся 
школ. 
 
 
Object-Oriented Programming, Straight Book. — Moscow: SOLON-Press, 
2018. — 298 p. (The "Programming" series)   
 
 
По вопросам приобретения обращаться: 
ООО «СОЛОН-Пресс» 
Тел: (495) 617-39-64, (495) 617-39-65 
E-mail: kniga@solon-press.ru, www.solon-press.ru 
 
ISBN 978-5-91359-285-9 
© «СОЛОН-Пресс», 2021 
 
© Рик Гаско, 2021 
 
© Rick Gassko, 2021 


 
 
 
 
 
 
 
Посвящается 
естественно, Хорошим Людям 
Нас так мало осталось 
 
 
3


Содержание 
 
 
Вступление .......................................................................................................7 
Здравствуйте, коллеги!..............................................................................7 
Человеческими словами - о чём эта книга?.............................................8 
А о чём я здесь не буду говорить?............................................................9 
А на каком языке мы будем программировать?....................................11 
О шрифтах ................................................................................................13 
О Приложении и приложениях...............................................................14 
Почему я иногда повторяюсь?................................................................15 
Что почитать?...........................................................................................16 
Часть Первая. Теория ..................................................................................20 
Глава 1 TP. Простая программа. И как будто ничего нового ..............20 
Преамбула.................................................................................................20 
Повторение пройденного. Светофор без затей .....................................20 
Светофор причёсанный ...........................................................................24 
Печальное будущее нашего светофора. Прогноз..................................26 
Много, очень много, светофоров............................................................28 
Глава 2 То же самое. Весело и с объектами .............................................41 
Вступление и объяснения........................................................................41 
Наконец, объектный светофор................................................................45 
А теперь много объектных светофоров .................................................54 
А теперь со всей этой фигнёй мы попытаемся взлететь ......................59 
Глава 3 То же самое. Delphi. Глава очень короткая...............................61 
Расширение кругозора. Вообще о классах в Delphi..............................65 
Ещё раз, другими словами, о важном ....................................................67 
Виноват, исправлюсь…...........................................................................69 
Глава 4 Речь в данной главе пойдет только и исключительно о 
свойствах ........................................................................................................70 
Просто свойства .......................................................................................70 
Наконец, последняя, и правильная, светофорная программа ..............80 
Не просто свойства, а индексированные ...............................................81 
Дайте две! .................................................................................................90 
Самый главный метод .............................................................................96 
Всё-таки графика......................................................................................98 
А дальше? ...............................................................................................101 
Всякие дополнительные мелочи и детали ...........................................102 
Глава 5 Теперь по научному. Инкапсуляция ........................................106 
 
 
4 


Глава 6 Понятная программа про наследование без терминов.........110 
Простой класс, ничего нового ..............................................................110 
Тот же класс, но кое-что новое.............................................................115 
Глава 7 Теперь по научному. Наследование..........................................122 
Общая теория. Длинная.........................................................................122 
Нюансы. Повысить или понизить?.......................................................129 
Серьёзные изменения в классе .............................................................132 
А теперь о хорошем...............................................................................136 
Глава 8 Практические занятия по наследованию.  
И по тестированию .....................................................................................139 
Небольшой перерыв – открытые массивы...........................................139 
Назад в ООП...........................................................................................143 
Вперёд в ООП.........................................................................................148 
Немного о тестах....................................................................................153 
Возвращаемся от тестирования к программированию.......................160 
ООП продолжается................................................................................163 
А теперь о главном ................................................................................168 
Развитие темы.........................................................................................173 
Глава 9 Наследование очень коротко.....................................................175 
Глава 10 Что-то с виртуальными методами..........................................178 
Сначала о грустном................................................................................178 
Любимый пример, с небольшими изменениями.................................179 
Несколько новых слов...........................................................................186 
Быстро чиним программу о словах ......................................................189 
Немного глубже и подробнее ...............................................................190 
Развитие темы.........................................................................................198 
Глава 11 Теперь по научному. Полиморфизм.......................................201 
Развитие темы.........................................................................................202 
Глава 12 Вся теория вместе и коротенько. Раз и навсегда .................205 
ООП с птичьего полёта .........................................................................205 
Наследование..........................................................................................206 
Полиморфизм .........................................................................................210 
Глава 13 Коротко. Особенности ООП применительно к Delphi........212 
О свойствах, неупомянутое...................................................................213 
Экзотика..................................................................................................215 
Глава 14 Эскиз очень сложной программы. Карты.............................216 
Преамбула...............................................................................................216 
Чего я хочу. Обоснование .....................................................................216 
Как я это вижу, и кто у нас будет классом ..........................................219 
Карта и колода. Начинаем программировать......................................224 
 
 
5


Рекомендации по дальнейшему развитию сюжета.............................225 
Глава 15 Эскиз программы. Пускай умрёт слабейший.......................227 
О программировании, амёбах и Чарльзе Дарвине..............................227 
Наш Мир. И наша Война.......................................................................228 
Суровая программистская реальность.................................................231 
Ободряющий финал...............................................................................235 
Часть вторая. Практика............................................................................236 
Приложение A. Немного о карточных играх.........................................236 
Постановление Министерства спорта и туризма Республики Беларусь 
от 14 мая 2003 г. №12 "Об утверждении Инструкции по игре в "Храп"
.................................................................................................................236 
Адаптация правил храпа к нашим условиям, моим вкусовым 
пристрастиям и удобству программирования.....................................240 
Приложение B. Как настроить Delphi.  Очень коротко.......................242 
Project\Options… ....................................................................................242 
Environment Options...............................................................................244 
Editor Options..........................................................................................245 
Debugger Options....................................................................................245 
Ещё ..........................................................................................................245 
И совсем напоследок .............................................................................246 
Приложение C Как рисовать в TP. На одной странице.  
Нет, на двух ..................................................................................................247 
Приложение D. Как рисовать в Delphi....................................................249 
Цвет .........................................................................................................249 
Рисуем.....................................................................................................250 
Приложение E Простой объект для работы с клавиатурой через 
BIOS...............................................................................................................261 
Приложение F Программа о словах. Полностью и даже лучше ........263 
Комментарии, возможно, ненужные....................................................269 
О файлах и потоках. Сравнительный анализ.......................................270 
Приложение G Очень полезные процедуры, функции и классы ......277 
Правильный TStringList.........................................................................277 
Правильный TList ..................................................................................278 
Очень правильный класс для сохранения и восстановления вообще283 
Реализация правильного класса............................................................291 
Хочется чего-то ещё ..............................................................................296 
 
 
 
6 


Вступление 
Здравствуйте, коллеги! 
Как-то раньше   я написал книгу «Самоучитель игры на Паскале». 
Потом я написал книгу «Школа игры на Паскале». Сначала всё было 
просто – сначала Самоучитель, потом Школа. А что дальше я даже и не 
знаю. Короче говоря – эта книга о самом главном – об Объектно 
Ориентированном 
Программировании. 
Сокращённо 
ООП. 
Для 
любителей, 
ООП 
можно 
расшифровать 
и 
как 
Объектно 
Ориентированный Подход. Ещё встречается расшифровка Объектно 
Ориентированное Проектирование. Смысл-то всё равно один. 
 
Сначала этот раздел назывался совсем по-другому – «Здравствуйте, мои 
маленькие друзья!». Назывался он так дурашливо и бесцеремонно 
потому, что сначала я ориентировал книгу на студентов младших 
курсов соответствующих специальностей и даже на очень умных 
старшеклассников. Но, пока я книгу писал, я много общался с другими 
программистами. А также вспоминал те чудные времена, когда 
Объектное Программирование только появилось на нашем горизонте.  
 
И, к своему ужасу, я понял, что большинство программистов ООП не 
понимают. Причём, половина программистов не понимает ООП 
вообще, но понимает, что она (половина в смысле) его (ООП в смысле) 
не понимает. А из другой половины многие уверены что всё понимают, 
но в реальности понимают как-то странно…  Эти, кстати, самые 
опасные, если с ними приходится работать вместе. 
 
Поэтому я подумал и решил слегка сменить ориентацию – на 
профессионалов, которые все-таки, наконец, захотели узнать, что же 
такое ООП и как оно работает и зачем это надо. Разумеется, студенты, и 
умные старшеклассники никуда не делись. Я вообще-то пишу очень 
просто, доступно и увлекательно. Понятно ведь – сам не похвалишь, 
никто не похвалит… 
 
И название у книги сначала было другим. Вначале эта книжка 
называлась «Объекты, классы и Винни-пух», что, разумеется, совсем 
другое дело… Потом я испугался. Не нарушаю ли этим авторских прав 
покойных А.Милна и Г.Заходера? Точнее, их покойных родственников. 
Точнее, наоборот. Ну, вы поняли. То есть я испугался, что чёрной–
чёрной ночью на чёрных-чёрных вертолетах за мной прилетят 
 
 
7


поборники авторских прав и впердолят. Извините, если слово 
«поборники» оказалось для вас незнакомым и грубым. Поборники – это 
такие не совсем хорошие люди, ну вы поняли, им бы лишь побороться,  
или побираться, они ведь такие поборники.  
 
Короче, название пришлось поменять. Разумеется, из-за этого 
пришлось поменять всю концепцию книги. Низабудунипрощу! 
 
Вы ничего не поняли? Хорошо, переходим ко второму разделу. 
 
Человеческими словами - о чём эта книга? 
Самокритично признаюсь – я человек немолодой и вообще скорее 
преклонных лет, чем юный. За свою жизнь я повидал немало 
нововведений, и, обычно, глядя на них,  я приговаривал – «какая 
дурь!». И обычно оказывался прав. Знаете ли вы, что такое «тощие 
компьютеры»?  Или язык программирования Жаба, которая заменит все 
дожабные языки программирования на свете? Или Интернет, который 
«всему научит сам»?  Я даже не вспоминаю о системах команд RISC, 
SISC, PISC и о безжалостной между ними войне. 
 
А знаете ли вы, что такое Open Source? Нет, вы, скорее всего, знаете, 
что это такое. Но вы наверняка и представить не можете, как нам его 
пытались 
продать 
двадцать 
лет 
назад. 
Как 
сейчас 
помню, 
замечательную статью молодого журналиста, по забавной случайности 
из того же города, что и я. Он романтически сравнивал Open Source с 
долгожданной весной – вот придёт весна, растает снег, и из-под снега 
покажутся собачье дерьмо и окурки. Придётся понюхать, но потом мы 
всё это уберём, и настанет счастье. Меня эта концепция как-то сразу не 
увлекла. 
 
А теперь нам пытаются продать какие-то «облачные вычисления», или 
что-то другое «облачное». Был такой великий поэт Маяковский, 
написал поэму «Облако в штанах», потом понял, что полная ерунда 
получается, и застрелился, от большой любви, конечно. И с этими 
нынешними фантазёрами то же будет.  
 
И вот всё, о чем я говорил, тощие компьютеры, открытые тексты и даже 
не помню точно что, отправилось, извините, в задницу. И всё прочее, 
чего я не способен понять в течение минуты, отправится туда  же. У 
меня страшное врождённое чутьё на мутные и сомнительные вещи. 
 
 
8 


Если я чего-то за минуту не смог понять, значит «в топку», как 
говорили в моей молодости в этом самом ФИДО. Извините, отвлёкся. 
 
Так вот, одна из тех немногих вещей, которые, я мало того, что понял 
сразу, но они ещё и оказались хоть к чему-то годными – Объектно 
Ориентированное Программирование, сокращённо, как уже не раз 
сказано, – ООП. Я его рекомендую, а моя рекомендация чего-то да 
стоит. Вот о нём, об ООП, в книге в основном речь и пойдёт. 
 
 
А о чём я здесь не буду говорить? 
Вопрос кажется странным. Естественно, количество предметов 
неупомянутых в этой книге в бесконечное количество раз превышает 
количество предметов, в этой книге упомянутых. Тем не менее, вопрос 
вполне нормален и уместен – любой автор должен чем-то себя 
ограничить, за счёт предметов, которые вроде бы принадлежат к тем, о 
которых поговорить можно,  но вроде бы и ни к чему. Ни к чему, 
разумеется, исключительно по моему мнению. 
 
Так вот, я не буду говорить об этом. 
 
Я не буду говорить о том, как оно, ООП, устроено внутри. К примеру, 
вот так. Далее цитата из очень хорошей книги: 
 
«Когда компилятор компилирует правила объекта Point, он сначала 
встречает Point.Show и Point.Hide и компилирует  код  для  обоих  
правил в сегмент кода. Немного позднее в файле он встречает правило 
Point.MoveTo, которое вызывает как правило, Point.Show, так и 
правило Point.Hide. Как и в случае с любым вызовом процедуры, 
компилятор замещает указатели исходного кода на Point.Show. и 
Point.Hide адресами их сгенерированного кода в сегменте кода». 
 
Вам это интересно? Лично мне – нет. Весь смысл Объектно 
Ориентированного Подхода к программированию и заключается в том, 
что нам абсолютно неинтересно, что там внутри, причём, неважно у 
кого внутри. 
 
Древняя английская мудрость гласит: «Если оно выглядит как утка, 
плавает как утка и крякает как утка, то это утка и есть». Да, я в курсе, 
что эта мудрость не древняя и не английская, но в отношении ООП она 
 
 
9


заиграла новыми красками – ну кому какая разница, как оно устроено 
внутри, и как компилятор генерирует код. Крякает? Крякает. Значит, 
утка. 
 
Более того, в этой книге я ни разу не вспомню о святом: 
 
«Каждый  тип  объекта имеет в сегменте данных нечто, 
называющееся "Таблицей виртуальных правил" (VMT). Эта таблица 
содержит размер типа объекта, и, для каждого  из его  виртуальных 
правил, указатель на код, реализующий это правило. 
Конструктор же устанавливает связь  между  экземпляром,  
вызывающим этот  конструктор, и Таблицей виртуальных правил 
(VMT) данного типа объекта. 
 Важно помнить: для каждого типа объекта существует только одна 
таблица виртуальных правил. Отдельные экземпляры типа объекта 
(то есть переменные этого типа) содержат связь с VMT - они не  
содержат саму  Таблицу виртуальных  правил (VMT)».  
 
Я привёл эту длинную цитату из той же очень хорошей книги 
неслучайно. Кстати, все ссылки на источники цитирования далее 
аккуратно последуют. Я привёл эту цитату, потому что нет ни одной 
книги по ООП, в которой бы не упоминалась Таблица Виртуальных 
Методов. (Здесь, по прихоти переводчика-затейника,  то, что обычно 
называется  «метод», упорно именуется термином «правило», я не знаю 
почему). 
 
Так что я решил не отступать от всеобщего заговора писателей про 
ООП и тоже об этом вспомнил – первый и последний раз. Да и вы 
теперь всё об этом прочитали и знаете. 
 
Прочитали – забудьте. Нам это не понадобится. 
 
И, разумеется, немного далее я приведу список самых разных книг, 
которые советую вам прочитать. А вот здесь, на этом самом месте, я 
должен торжественно объявить, что есть и книги, которые читать не 
надо, что, по-своему, вполне логично. Чем хороша эпоха Интернета, так 
это тем, что можно посоветовать любую книгу, не заботясь о её годе 
выпуска. Только один пример, ничего личного. 
 
Орлик С. В. - Секреты Delphi на примерах, «Бином» 
 
 
10