ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 9) онлайн
Роль наследования при разработке программ
Процесс разработки программ был основательно изменен с появлением ООП. Это связано не только с использованием классов, но и с использованием насле- дования. Рассмотрим его этапы.
Пусть программист А создает класс. Положим, это будет класс, похожий па класс Distance, методы которого предназначены для выполнения арифметиче- ских операций с определенным пользователем типом данных.
Программисту Б нравится этот класс, но он считает, что класс может быть улучшен путем введения знака интервала. Решением будет создание нового класса, похожего на класс DistSign программы ENGLEN, который является произ- водным класса Distance, но включает в себя расширения, необходимые для реа- лизации знака интервала.
Программисты В и Г затем пишут приложения, использующие класс DistSign.
Программист Б может не иметь доступа к исходному коду, реализующему класс Distance, а программисты В и Г могут не иметь исходного кода класса DistSign. Но в C++ существует возможность повторного использования кода, по- этому программист Б может использовать и дополнять работу программиста А, а В и Г могут использовать работы Б (и А).
Заметим, что различия между разработчиками инструментов программного обеспечения и программистами, пишущими приложения, становятся расплыв- чатыми. Программист А создает общецелевой программный инструмент, класс Distance. Программист Б, в свою очередь, создает более специализированный класс DistSign. Программисты В и Г пишут приложения. А — разработчик инст- румента, а В и Г — разработчики приложений. Б находится где-то посередине. В любом случае ООП делает программирование более гибким, но в то же время и более сложным.
В главе 13 мы рассмотрим, как классы могут быть разделены на доступную клиенту часть и часть, которая распространяется только для объектов и может быть использована другими программистами без наличия исходного кода.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42