Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

История и развитие методологии объектно-ориентированного программирования. Сферы применения (Сущность и история развития объектно-ориентированного программирования)

Содержание:

Введение

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

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

Задачами данной курсовой работы являются:

-Изучение основных принципов объектно-ориентированного программирования;

-Усвоение теории ООП;

-Изучение история и степени развития ООП;

-Исследование главных тезисов ООП;

-Изучение высказываний об ООП различного вида;

-Практическое освоение основы ООП;

Объектом работы является объектно-ориентированное программирование. Предметом работы является изучение всех принципов и языков высокого уровня объектно-ориентированного программирования.

Довольно нужной книжкой при исследовании объектно-ориентированного программирования оказалась книга Ахо А. В данной книге имелись разнообразные структуры данных, рассмотрены основы деятельность с разными структурами.

Предполагаемая фактическая важность курсовой работы состоит в том, что её можно будет применять в свойстве источника извлечения теоретически использованного материала согласно проблеме «Объектно-ориентированные языки программирования высокого уровня», а кроме того как руководство по проектированию класса с применением основ объектно-ориентированного программирования.

Глава 1. Теоретическая основа объектно-ориентированного
программирования

1.1 Сущность и история развития объектно-ориентированного
программирования

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

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

Развитие частей программирования с объектно-ориентированного программирования произошло, как случилось развитие модульного с процедурного программирования: процедуры сложились в модули - самостоятельные части кодировки вплоть до уровня сборки программы, таким образом объекты сложились в компоненты - самостоятельные доли кодировки до степени выполнения программы. Через сообщения, происходит взаимодействующая работа объектов. Посредствам дальнейшего прогрессивного развития программно-ориентированного программирования является, агентно-ориентированое программирование. В данном виде программирования агенты - независимые части кода, которые находятся на уровне выполнения. Путем изменения среды, в которой содержатся агенты, происходит их взаимодействие. [10]

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

Симула – является самым первым из языков программирования, в структуре, которая была основана на объектной ориентированности. Этот язык программирования появился в 1967 году и сразу же организовал переворот старых, уже сработанных идеи: объекты, классы, виртуальные методы и другие, но это не повлекло за собой масштабного перехода на этот язык. Не смотря на это, большая часть теорий были развиты Аланом Кэйем и Дэном Ингаллсом в языке Smalltalk. Smalltalk стал первым широко распространённым и популярным среди программистов языком объектно-ориентированным программирования.

На данный момент язык программирования, основанные на объектно-ориентированной модели имеют подавляющее преимущества в использовании, относительно других моделей. Модель процедурного программирования используется в сфере системного программирование, и по сей день. А общепринятым языком является язык С. Хотя при взаимодействии системного и прикладного уровней операционных систем заметное влияние стали оказывать языки объектно-ориентированного программирования. Библиотека Qt считается одной из самой распространенной мульти платформенного программирования. Она написана на языке C ++. [1]

1.2 Главные понятия и разновидности

Свойство данных, представляющие собой объектный тип данных, внешне похожа на типы данных процедурно-ориентированных языков, такие как структура в языке С или запись в Паскале или QuickBasic. Данные, как и методы (процедуры или функции) являются элементами данной структуры. Такой комплекс зовется инкапсуляцией.

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

Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки зрения ООП. Если, язык программирования, созданный полиморфизмом, то только в данном случае возникают главные преимущественные качества объектно-ориентированного программирования. Одним из подвидов объектного программирования является, прототипное программирование. Начало этому подвиду положил язык Self, который, не смотря на то, что соблюдал многие исходные приложения, ввел альтернативное понятие – прототип. Ниже указаны и расписаны главные термины. [15]

Главные термины объектно-ориентированного программирования.

Понятие

Определение

Абстракция

Абстрагирование – это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция – это набор всех таких характеристик.

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

Инкапсуляция – это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

Наследование

Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс – потомком, наследником или производным классом.

Полиморфизм

Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

1.3 Основные принципы в объектно-ориентированном
программировании

Понятию “объект” сопоставляют ряд дополняющих друг друга определений. Ниже приведены некоторые из них.

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

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

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

Можно выделить пять типов операций:

- конструктор, созидание и распознавание объекта;

- деструктор, рушащий объект;

- модификатор, меняющий структуру объекта;

- селектор для доступа к переменным объекта без их изменения;

- итератор для доступа к содержанию объекта по частям в определенной последовательности.

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

Объекты имеют определённые отношения друг к другу. Данные отношения могут иметь иерархический вид. Отношения использования и включения являются главными отношениями иерархического вида. Отношение использования реализуется посылкой сообщений от объекта A к объекту B. При этом объект A может выступать в роли:

- активного или воздействующего объекта, когда он воздействует на другие объекты, но сам воздействию не подвергается;

- пассивного или исполняющего, когда объект подвергается воздействию, но сам на другие объекты не воздействует;

- посредника, если объект и воздействует и сам подвергается воздействию.

Отношение включения имеет место, когда составной объект содержит другие объекты. [4]

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

Объекты хранят совместно все без исключения собственные характеристики и характерные черты поведения. Взаимоотношения частей к единому и отношения между элементами станут понятнее тогда, когда все без исключения находится совместно в одной упаковке. Это и называется инкапсуляцией. [18]

Одним из важных фактов является факт наследия объектов свойств и поведения у своих предков. Самым большим различием между обычным программировании на Паскале и объектно-ориентированном программировании в Borland Pascal является – наследие. От этого происходит качественный скачок. В терминах Паскаля, объект во многом схож с записью, которая является оболочкой для объединения нескольких связанных элементов под одним именем.

Наследование это процесс, при котором один вид наследует свойства другого вида. Тип, который наследует – порожденный, а тип которому наследует дочерний тип – порождающий. Известные прежде виды записей Паскаля не могу наследовать, но Borland Pascal усовершенствует язык Паскаля для поддержки наследования. Одним из этих усовершенствований является новая категория структуры данных, связанная с записями, но значительно более мощная. При помощи слова object, в новой категории определяются типы данных. Тип объекта может быть определен как полный, самостоятельный тип в манере описания записей Паскаля, но он может определяться и как потомок существующего типа объекта путем помещения, порождающего (родительского) типа в скобки после зарезервированного слова object.

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

Как выявили данные определения, объекты непосредственно объединены с записями. Новейшее зарезервированное слово object считается более явным отличием, однако как мы узнаем позже, существует огромное количество иных отличий, определенные из которых достаточно тонкие. [7]

Экземпляры объектных типов описываются в точности, таким же образом, равно как в Паскале описывается каждая переменная, или постоянная, или указатель, ссылающийся на размещенную в динамической памяти переменную. [20]

При помощи оператора with, либо через уточнения с помощью точки мы можем обратиться к полю объекта в точности так же, как к полю обычной записи. [5]

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

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

Во время разработки программы необходимо учитывать не только свойства кода, но и совместных данных. Это является одним из главных принципов объектно-ориентированного программирования, так как ни код, ни данные не могут существовать в вакууме. Код управляет образами и значениями данных, а данные – потоком кода.

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

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

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

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

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

Объект, никак не имеющий наследования, именуется базисным объектом. Объект, наследующий свойства иных объектов, именуется порожденным либо производным объектом. [22]

Один и тот же метод, который выполняется по-своему, для каждого из различных объектов называется – Полиморфизмом. Например, метод класса Музыкальный инструмент - PlayMusicForAnOrchestra - может быть определен как общий метод, который может использоваться с любой категорией музыкальных инструментов. Данный способ прописан подобным способом, что никак не важно, тот или иной именно инструмент приобретает поручение играть, однако для классов, описывающих определенные инструменты, этот способ обязан являться переопределен (override), что предоставит возможность установить определенные воздействия, учитывающие характерные черты этого инструмента. [2]

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

Новейший язык объектно-ориентированного программирования обладает определенным набором синтаксических средств, а именно: Объявление классов с полями и методами.

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

Методы защиты внутренней структуры классов от влияния внешних факторов. Чаще всего это модификаторы доступа к полям и методам, типа public, private, или же protected, но иногда некоторые другие.

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

Некоторые из них:

Конструкторы, деструкторы, финализаторы.

Свойства (аксессоры). [13]

Интерфейсы (к примеру, в Java используются также как альтернатива множественному наследованию - любой класс может реализовать сколько угодно интерфейсов). [21]

Часть языков полностью создана вокруг объектных средств - в них всевозможные сведения считаются объектами, любой код - методом какого-либо класса, и нереально составить программу, в которой никак не применялись б объекты. Примеры подобных языков - C#, Smalltalk, Java, Ruby. Прочие языки содержат ООП-подсистему в первоначально установленный язык. В них существует возможность программировать, не обращаясь к объектным средствам. Классические примеры - C++ и Delphi. [11]

2. Характеристика и анализ объектно-ориентированного
программирования

2.1. Критика объектно-ориентированного программирования

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

Процедурное программирование лучше, когда есть больше времени на разработку, но важны программные ресурсы и быстродействие программы.

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

Некоторая критика в адресс объектно-ориентированного программирования:

Исследование Thomas E. Potok, Mladen Vouk и Andy Rindos выявило отсутствие повышения продуктивности по сравнению с процедурным методом программирования.

Кристофер Дэйт показывает на неосуществимость сопоставления объектно-ориентированного программирования и иных технологий в значительности из-за отсутствия жесткого и общепринятого установления объектно-ориентированного программирования.

Александр Степанов, в одном из собственных интервью, показывал на то, что объектно-ориентированного программирования «методически неверно» и то что «…объектно-ориентированного программирования почти такая же мистификация, равно как и искусственный интеллект…».

Фредерик Брукс (Frederick P. Brooks, Jr.) в своей статье «No Silver Bullet. Essence and Accidents of Software Engineering» (Computer Magazine; April 1987) показывает на то, что более непростой составляющей формирования программного обеспечения считается « … классификация, дизайн и тестирование концептуальных конструкций, а вовсе никак не работа согласно формулировке этих концептуальных конструкций…». Объектно-ориентированного программирования (наравне с подобными технологиями равно как искусственный интеллект, проверка программ, автоматическое программирование, графическое программирование, экспертные системы и др.), по его мнению, никак не считается «серебряной пулей», которая имела возможность бы на порядок величины (то есть приблизительно в ДЕСЯТЬ раз, равно как рассказывается в заметке) уменьшить трудность исследования программных систем. Согласно Бруксу, «…объектно-ориентированное программирование дает возможность уменьшить только лишь привнесённую трудность в представление дизайна. Дизайн остаётся трудным согласно собственной натуре …».

Эдсгер Дейкстра указывал: «…в таком случае о чём социум в основной массе случаев просит - данное змеиное масло. Безусловно, „змеиное масло“ содержит весьма вдохновляющие имена, по другому будет весьма сложно что-то реализовать: „Структурный исследование и Дизайн“, „Программная инженерия“, „Модели зрелости“, „Управляющие информативные системы“ (Management Information Systems), „Интегрированные сферы помощи проектов“, „Объектная ориентированность“, „Реинжиниринг предпринимательство действий“…».

Никлаус Вирт считает, что объектно-ориентированное программирование - никак не более, нежели элементарная надстройка надо структурным программированием, и преувеличение ее важности, выражающееся, в этом числе, во включении в языки программирования всё новейших популярных «объектно-ориентированных» средств, вредит качеству разрабатываемого программного обеспечения.

Патрик Киллелиа в собственной книге «Тюнинг веб-сервера» писал: «… Объектно-ориентированного программирования дает вам большое число методов замедлить работу ваших проектов …»

Популярная обзорная публикация проблем нынешнего объектно-ориентированного программирования перечисляет определенные характерные задачи объектно-ориентированного программирования - Отчего объектно-ориентированное программирование провалилось. [9]

2.2. Аспекты критики объектно-ориентированного
программирования

Выделяются несколько аспектов критики объектно-ориентированного подхода программирования. [17]

Критикуется очевидно высказываемое либо подразумеваемое в работах определенных пропагандистов объектно-ориентированного программирования, а кроме того в маркетинговых материалах «объектно-ориентированных» средств исследования понимание о объектном программировании равно как о таком-то всемогущем подходе, который волшебным образом ликвидирует трудность программирования. Равно как обращали внимание многие, в том числе перечисленные выше Брукс и Дейкстра, «серебряной пули не существует» - вне зависимости от того, какой парадигмы программирования руководствуется создатель, формирование сложной непростой программной концепции постоянно связано с внушительными расходами умственных ресурсов и времени. Из более известных экспертов в сфере объектно-ориентированного программирования ни один человек, как правило, не отвергает достоверность оценки данного вида. [8]

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

Указывается на то, что целый ряд «врождённых отличительных черт» ООП-технологические процессы делает выстроенные на базе ее программы технически меньше результативными, согласно сопоставлению с подобными необъектными программами. Никак не отвергая на самом деле существующих дополнительных мнимых затрат на организацию деятельность ООП-проектов, необходимо, однако, отметить, то что роль уменьшения производительности зачастую гиперболизируется критиками. В нынешних обстоятельствах, если технические способности пк весьма значительны и регулярно увеличиваются, для многих прикладных программ техническая результативность как оказалось меньше существенна, нежели работоспособность, темп исследования и сопровождаемость. Только для определенного, весьма узкого класса программ (ПО интегрированных систем, драйверы устройств, низкоуровневая часть системного ПО, научное ПО) эффективность остаётся решающим условием. [19]

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

Производительность объектных программ. Гради Буч показывает на последующие предпосылки, погружающие к уменьшению производительности программ из-за применения объектно-ориентированных средств:

Динамическое связывание методов. Предоставление полиморфного действия объектов приводит к потребности объединять способы, порождаемые программой (то есть определять, тот или иной непосредственно способ станет вызываться) никак не в стадии компиляции, а в ходе выполнения программы, на то что расходуется вспомогательное время. При данном действительно динамическое соединение необходимо не более чем для 20 % вызовов, однако определенные языки объектно-ориентированного программирования применяют его регулярно. [14]

Значительная глубина абстракции. Разработка объектно-ориентированного программирования зачастую приводит к формированию «многослойных» дополнений, где осуществление объектом необходимого воздействия объединяется к большому количеству обращений к объектам наиболее невысокого степени. В этом дополнении совершается весьма большое количество вызовов методов и возвратов из методов, то что, безусловно, влияет на производительности. [3]

Наследование «размывает» код. Код, принадлежащий к «оконечным» классам иерархии наследования (какие как правило и применяются проектом напрямую) - пребывает не только лишь в самих этих классах, однако и в их классах-праотцах. Принадлежащие к одному классу способы, по сути, описываются в различных классах. Данное приводит к двум малоприятным факторам:

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

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

Инкапсуляция снижает скорость доступа к данным. Запрещение на непосредственный доступ к полям класса снаружи приводит к потребности формирования и применения способов допуска. И написание, и компиляция, и выполнение способов допуска связано с добавочными затратами.

Динамическое создание и уничтожение объектов. Подвижно формируемые объекты, равно как принцип, располагаются в куче, что меньше результативно, нежели расположение их в стеке и, этим наиболее, постоянное акцентирование памяти под них в стадии компиляции. Невзирая на указанные минусы, Буч заявляет, то что выгоды с применения объектно-ориентированного программирования наиболее весомы. Помимо этого, увеличение производительности за счёт наилучшей организации кодировки объектно-ориентированного программирования, согласно его словам, в определенных случаях возместит вспомогательные мнимые затраты на организацию функционирования программы. [6]

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

3. Проектирование, используя объектно-ориентированное программирование

3.1 Описание предметной области

Приступим к исследованию класса «Подсчет успеваемости студентов».

Первоначально опишем предметную область.

У всех студентов имеются Ф.И.О и средний балл.

Допустим, в группе учится 20 студентов.

У студентов могут смениться как личные данные, так и средний балл успеваемости.

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

3.2 Проектирование класса

Для представления предметной области необходим класс student. Опишем его подробно.

class student{

int id,

char* soname,

char* name,

char* phone,

float bal,

}

Подробно опишем каждое из полей класса student.

id – аутентификация учащегося. У всех учащихся есть свой личный номер, который не меняется не при каких обстоятельствах. Следовательно, хватит одной функции, которая будет устанавливать номер учащегося.

soname – фамилия студента. Это поле может быть изменено, по этому нужно создать функцию, способную изменять его.

name – имя студента. Это поле меняться не должно, по этому, хватит функции, которая будет находить по имени.

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

bal – средний балл студента. Это поле возможно будет меняться, поэтому создаем функцию, которая будет делать это.

Поля: soname, name, phone, bal являются внутренними переменными класса – private. Эти переменные доступны только внутри самого класса. К данным переменным нельзя обратиться. [12]

3.3 Проектирование методов класса

Восполним созданный класс абсолютно всеми важными методами для работы с внутренними неустойчивыми класса. Спроектируем конструктор класса. Особый блок инструкций, который, вызывается во время создания объекта в ООП, является конструктором класса.

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

Наименования класса и конструкторов всегда идентичны.

В данном случае конструктор только лишь инициализирует внутренние переменные класса.

student (int id, char* s, char* n, char* p, float b = 0) {

this->id = id;

this-> soname = s;

this-> name = n;

this-> phone = p;

this-> bal = b;

}

Добавим в класс все необходимые методы.

Это методы, которые устанавливают значение внутренним переменных и извлекают их из класса.

/*функция возвращает фамилию студента*/

char* getSoname (){

return this-> soname;

}

/*функция возвращает имя студента*/

char* getName (){

return this-> name;

}

/*функция возвращает телефон студента*/

char* getPhone (){

return this-> phone;

}

/*функция возвращает идентификатор студента*/

int getId (){

return this-> id;

}

/*функция возвращает средний балл студента*/

float getBal (){

return this-> bal;

}

/*функция устанавливает фамилию студента*/

void setSoname (char* s){

this-> soname = s;

}

/*функция устанавливает имя студента*/

void setName (char* n){

this-> name = n;

}

/*функция устанавливает идентификатор студента*/

void setId (int id){

this-> id = id;

}

/*функция устанавливает средний балл студента*/

void setBal (float b){

this-> bal = b;

}

Заключение

При написании данной работы были решены следующие задачи:

-Усвоена основная теория ООП;

-Изучена история и степень развития ООП;

-Исследованы главные тезисы ООП;

-Изучены высказывания об ООП различного вида;

-Практически освоены основы ООП;

-На практике разработано приложения об успевании учащихся с помощью языка С++;

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

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

Применение ООП считается превосходным заключением при исследованию больших программных проектов.

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

Список источников

1.Объектно-ориентированное мышление. Автор: Вайсфельд Мэтт. Год: 2018. Страниц: 304.

2. Программирование на языке высокого уровня. Автор: Сергей Синицын, Александр Михайлов, Олег Хлытчиев Издательство: Academia Год: 2018. Страниц: 400.

3. Объектно Ориентированное Программирование. Хорошая книга для Хороших Людей. Автор: Комлев Н.Ю. Издательство: М.: Солон-Пресс Год: 2018. Страниц: 300.

4. Современные операционные системы. Четвертое издание Автор: Таненбаум Э. С., Бос Х. Год: 2015. Страниц: 1120.

5. Теория и практика языков программирования. Автор: Орлов С.А. Год: 2018. Страниц: 690.

6. Языки программирования. Автор: О. Л. Голицына, Т. Л. Партыка, И. И. Попов. Год: 2017. Страниц: 400.

7. Искусство автономного тестирования с примерами на С#. Второе издание Автор: Ошероув Рой. Год: 2018. Страниц: 360.

8. C++. От ламера до программера. Включая C++11. Автор: Эллайн Алекс. Год: 2015. Страниц: 480.

9. Qt 5.3. Профессиональное программирование на C++. Автор: Шлее М. Год: 2015. Страниц: 929.

10. Язык программирования C. Лекции и упражнения. Автор: Стивен Прата. Год: 2018. Страниц: 960.

11. Освой самостоятельно C++ за 21 день. Автор: Сиддхартха Рао. Год: 2018. Страниц: 688.

12. Стандартная библиотека C++. Справочное руководство. Автор: Николаи М. Джосаттис. Год: 2018. Страниц: 1136.

13. Язык программирования C++. Базовый курс. Автор: Стенли Б. Липпман, Жози Лажойе, Барбара Э. Му. Год: 2018. Страниц: 1120.

14. Искусство программирования игр на C++. Автор: Михаил Фленов. Год: 2015. Страниц: 256.

15. Эффективное использование C++. 35 новых способов улучшить стиль программирования. Автор: Скотт Майерс. Год: 2018. Страниц: 296.

16. Объектно-ориентированное моделирование на C++. Автор: Илья Труб. Год: 2016. Страниц: 416.