Освой самостоятельно С++ за 21 день - [4]

Шрифт
Интервал

В качестве примера возьмем вычисление средней заработной платы всех служащих компании. Это не такая уж простая задача. Однако ее можно разбить на ряд подзадач.

1. Выясняем, сколько зарабатывает каждый служащий.

2. Подсчитываем количество людей в компании.

3. Суммируем все зарплаты.

4. Делим суммарную зарплату на количество служащих в компании.

Суммирование зарплат тоже можно разделить на несколько этапов.

1. Читаем запись каждого служащего.

2. Получаем доступ к информации о зарплате.

3. Прибавляем очередное значение зарплаты к накопительной сумме.

4. Читаем запись следующего служащего.

В свою очередь, операцию чтения записи каждого служащего можно разбить на еще более мелкие подоперации.

1. Открываем файл служащих.

2. Переходим к нужной записи.

3. Считываем данные с диска.

Структурированное программирование остается довольно успешным способом решения сложных проблем. Однако к концу 1980-х годов слишком очевидными стали некоторые недостатки структурированного программирования.

Во-первых, не было реализовано естественное желание думать о данных (например, записях служащих) и действиях над ними (сортировке, редактировании и т.п.) как о едином целом. Процедурное программирование, наоборот, отделяло структуры данных от функций, которые манипулировали этими данными.

Во-вторых, программисты обнаружили, что они постоянно переизобретают новые решения старых проблем. Такая ситуация часто называется изобретением колеса (или велосипеда). Желание иметь возможность многократного использования рутинных блоков, повторяющихся во многих программах, вполне естественно. Это чем-то напоминает сборку приемника из радиодеталей. Конструктору не нужно каждый раз изобретать диоды и транзисторы. Он просто использует стандартные, заранее подготовленные радиодетали. Но для разработчиков программных продуктов такой возможности долгое время не было.

Внедрение в практику дружеского пользовательского интерфейса с рамочными окнами, меню и экранными кнопками определило новый подход к программированию. Программы стали выполняться не последовательно от начала до конца, а отдельными блоками в ответ на выполнение некоторого события. При возникновении определенного события (например, щелчка на кнопке или выбора из меню команды) программа должна отреагировать на него соответствующим образом. При таком подходе программы становятся все более интерактивными, что необходимо учитывать при их разработке.

Новый термин: Работая с программами прошлого поколения, пользователь вынужден был проходить через последовательность экранов, чтобы добраться до нужного. В современных программах сразу предоставляется возможность выбора из всех предусмотренных разработчиком вариантов и обеспечивается соответствующая реакция на выбор пользователя.

Объектно-ориентированное программирование стремится отвечать этим требованиям, предоставляя технологию управления элементами любой сложности, создавая условия для многократного использования программных компонентов и объединяя данные с методами манипуляции ими.

Суть объектно-ориентированного программирования состоит в том, чтобы обращаться с данными и процедурами, которые выполняют действия над этими данными, как с единым объектом, т.е. самодостаточным элементом, который в чем-то идентичен другим таким же объектам, но в то же время отличается от них определенными уникальными свойствами.

Язык C++ и объектно-ориентированное программирование

В языке C++ полностью поддерживаются принципы объектно-ориентированного программирования, включая три кита, на которых оно стоит: инкапсуляцию, наследование и полиморфизм.

Инкапсуляция

Когда инженер использует в своей разработке резистор, он не изобретает его заново, а идет на склад (в магазин, к коллеге — возможны варианты) и в соответствии с заданными параметрами подбирает себе нужную деталь. При этом его не очень-то волнует, как устроен данный конкретный резистор, лишь бы он работал в соответствии с заводскими характеристиками.

Именно это свойство скрытости или автономности объектов, используемых во внешних конструкциях, называется инкапсуляцией. С помощью инкапсуляции можно обеспечить сокрытие данных. Это очень важная характеристика, благодаря которой пользователь может не задумываться о внутренней работе используемого объекта. Подобно тому, как использование холодильника не требует знаний о принципах работы рефрижератора, применение хорошо разработанного программного объекта позволяет не заботиться о взаимоотношениях его внутренних переменных-членов.

Еще раз приведем аналогию: для эффективного использования резистора инженеру совсем не обязательно знать принципы его работы и внутреннее устройство. Все свойства резистора инкапсулированы (т.е. скрыты) в самом резисторе, важно только, чтобы он правильно справлялся со своими функциями.

В языке C++ свойство инкапсуляции поддерживается посредством создания нестандартных (пользовательских) типов данных, называемых классами. О том, как создаются классы, вы узнаете на занятии 6. После создания хорошо определенный класс действует как полностью инкапсулированный объект, т.е. его можно использовать в качестве целого программного модуля. Настоящая же внутренняя работа класса должна быть скрыта. Пользователям хорошо определенного класса не нужно знать, как этот класс работает; им нужно знать только одно — как его использовать.


Рекомендуем почитать
Теория и практика спортивного собаководства. Краткое учебное пособие

Книга подготовлена по материалам, подтвержденным практической работой по подготовке спортсменов-собаководов. При этом использовались материалы рабочих записей, дневников, тренерских советов, материалы семинаров, аналитические записи за период с 1976 по 2016 г. Издание предназначено в первую очередь инструкторам и тренерам по собаководству для работы с начинающими спортсменами-проводниками собак. Кроме этого, изложенный материал может быть полезен для любителей-собаководов.


Немецкая литература ХХ века. Германия, Австрия

Пособие состоит из двух разделов. Первый содержит характеристики крупнейших явлений в литературах Германии и Австрии на рубеже XIX–XX вв., в 1-й половине XX в. и во 2-й половине XX в. соответственно. Второй раздел включает преимущественно литературные портреты крупнейших немецкоязычных писателей (Г. Гауптмана, Т. Манна, Г. Манна, Р.М. Рильке, Б. Брехта, С. Цвейга, П. Хандке, Э. Елинек и др.).Для студентов филологических факультетов вузов, а также всех, кто интересуется немецкой литературой.


Актуальные проблемы современной лингвистики

Предлагаемое пособие включает развернутую программу учебной дисциплины «Актуальные проблемы современной лингвистики», хрестоматию и систему заданий творческого и проблемного характера. Издание призвано обеспечить изучение цикла общелингвистических дисциплин: «Теория языка», «Общее языкознание», «Актуальные проблемы современной лингвистики», включенных в блок специальных дисциплин государственного образовательного стандарта по направлению «Филология», а также в образовательный стандарт подготовки магистров по направлениям «Филология» и «Языковое образование».Для студентов, магистрантов, аспирантов, преподавателей-филологов.6-е издание.


Административный процесс

Административный процесс прочно занял свое место в ряду многих отраслей отечественного права. Однако взгляды на его сущность и правовую природу далеко не всегда однозначны. Предлагаемый вашему вниманию учебник отличается новизной. Он отвечает на многие вопросы, непосредственно связанные с жизнью украинского общества, и в первую очередь со сферой государственного управления, в которой затрагиваются права и свободы конкретных граждан во взаимоотношениях с исполнительными органами государства и последних – между собой.Для преподавателей, курсантов, слушателей, студентов, адъюнктов и аспирантов юридических вузов и факультетов, а также практических работников правоохранительных органов.


Учебник по ТРИЗ

В пособии хорошо описывается теория решения изобретательских задач и рассматриваются её инженерные приложения в качестве примеров. Последняя глава книги посвящена идеям и жизни создателя ТРИЗ — Г. С. Альтшуллера (писателя-фантаста Генриха Альтова).Сетевая, неполная версия учебника.


Международное публичное право

Учкбник предназначен для подготовки к экзаменам по предмету «Международное публичное право». В числе тем: понятие международного частного права, международное публичное и частное право международное публичное и частное право, субъекты международного публичного права, система международного публичного права, нормы международного публичного права и др.Может использоваться как электронный учебник, конспект, шпаргалка... Также пригодиться для написания письменных работ (реферат, курсовая, диплом, диссертация).