
- •Санкт-петербургский государственный политехнический университет
- •Курсовой проект
- •Введение
- •Часть 1: Описание принципов и основных понятий объектно-ориентированного программирования.
- •Часть 2: Описание особенностей языка Java, его достоинств и недостатков.
- •Часть 3: Описание кода программы. Принципы объектно-ориентированного программирования
- •Особенности языка Java
- •Описание кода программы
- •Заключение
Санкт-петербургский государственный политехнический университет
Кафедра Информационные системы в экономике и менеджменте
|
|
Курсовой проект
Выполнила студентка гр. 1074/2 Лапина Виталия
Руководитель и преподаватель Чанцев Валерий Петрович
Санкт-Петербург
2011 г.
Содержание:
Введение…………………………………………………………................ 3
Принципы объектно-ориентированного программирования………….. 4
Особенности языка Java………………………………………………………………..................7
Описание кода программы…………………………………………………………………9
Заключение……………………………………………………………….12
Введение
Целью данного курсового проекта является написание программы «хитрой сортировки», в которой из массива путем однократного просмотра выбирается последовательность элементов, находящихся в порядке возрастания, переносятся в выходной массив и заменяются во входном на -1. Затем оставшиеся элементы включаются в полученную упорядоченную последовательность методом погружения.
Для реализации поставленной цели необходимо выполнить следующие задачи:
Определить общие принципы объектно-ориентированного программирования.
Описать особенного языка Java.
Написать код для программы.
В ходе создания программы необходимо использовать основные операторы, методы и принципы языка Java. Кроме того, важно, чтобы созданная программа была простой, удобной и понятной.
В соответствии с поставленными задачами работа имеет следующую структуру:
Часть 1: Описание принципов и основных понятий объектно-ориентированного программирования.
Часть 2: Описание особенностей языка Java, его достоинств и недостатков.
Часть 3: Описание кода программы. Принципы объектно-ориентированного программирования
Объектно-ориентированное, или объектное, программирование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.
Объектно-ориентированное программирование развивается уже более двадцати лет. Имеется несколько школ, каждая из которых предлагает свой набор принципов работы с объектами и по-своему излагает эти принципы. Но есть несколько общепринятых понятий,которые мы рассмотрим далее.
При создании программных продуктов очень важно абстрагироваться от некоторых конкретных деталей объекта и выбрать правильную степень абстракции. Слишком высокая степень даст только приблизительное описание объекта, не позволит правильно моделировать его поведение. Слишком низкая степень абстракции сделает модель очень сложной, перегруженной деталями, и потому непригодной.
Описание каждой модели производится в виде одного или нескольких классов (classes). Класс можно считать проектом, слепком, чертежом, по которому затем будут создаваться конкретные объекты. Класс содержит описание переменных и констант,характеризующих объект. Они называются полями классов (class fields).
Поля классов – это параметры объекта (конечно, не все, а только необходимые в программе), задающие его состояние (свойства объекта предметной области). Иногда поля данных объекта называют свойствами объекта, из-за чего возможна путаница. Физически поля представляют собой значения ( переменные, константы), объявленные как принадлежащие классу.
Процедуры, описывающие поведение объекта, называются методами классов (class methods). Они определяют действия, которые можно выполнять над объектами определённого типа и которые сам объект может выполнять. Внутри класса можно описать и вложенные классы (nested classes) и вложенные интерфейсы.
Интерфейсы – это класс без полей и без реализации, включающий только заголовки методов. Если некий класс наследует (или, как говорят, реализует) интерфейс, он должен реализовать все входящие в него методы. Использование интерфейсов предоставляет относительно дешёвую альтернативу множественному наследованию.
В Java нет вложенных процедур и функций, в теле метода нельзя описать другой метод. После того как описание класса закончено, можно создавать конкретные объекты, экземпляры (instances) описанного класса. Создание экземпляров производится в три этапа, подобно описанию массивов. Сначала объявляются ссылки на объекты: записывается имя класса, и через пробел перечисляются экземпляры класса, точнее, ссылки на них. Затем операцией new определяются сами объекты, под них выделяется оперативная память, ссылка получает адрес этого участка в качестве своего значения. На третьем этапе происходит инициализация объектов, задаются начальные значения. Этот этап, как правило, совмещается со вторым, именно для этого в операции new повторяется имя класса со скобками . Это так называемый конструктор (constructor) класса, но о нем поговорим попозже.
Чтобы созданные классы не были перегружены, необходимо создать иерархию классов, то есть создать родительский класс и его подклассы. Дочерние классы будут расширять родительский.
Кроме того, каждый из созданных объектов должен брать на себя ответственность за свои поля и методы. Например, объект № 1,выполняя свой метод, посылает сообщение другому объекту №2 с просьбой выполнить метод А. Этим сообщением заключается контракт (contract) между объектами, суть которого в том, что объект №1 берет на себя ответственность (responsibility) задать правильные параметры в сообщении, а объект №2 возлагает на себя ответственность применить метод, каким бы он ни был.
Для того, чтобы правильно реализовать принцип ответственности, применяется ещё один принцип объектно-ориентированного программирования – модульность (modularity). Этот принцип утверждает: каждый класс должен составлять отдельный модуль. Члены класса, к которым не планируется обращение извне, должны быть инкапсулированы. Инкапсуляция – это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.
Таким образом, в основе объектно-ориентированного программирования лежат следующие принципы:
Абстракция;
Ответственность;
Иерархия;
Модульность .
Несмотря на все преимущества объектно-ориентированного программирования, поступает в его сторону и множество критических замечаний. Так, некоторые видные программисты считают, что ООП лишь травиальная надстройка над структурным программированием и преувеличение её значимости, выражающее, в том числе, во включении в языки программирования всё новых модных «объектно-ориентированных» средств, вредит качеству разрабатываемого программного обеспечения.
Многие современные языка специально созданы для облегчения объектно-ориентированного программирования. Однако следует отметить, что можно применять техники ООП и для не объектно-ориентированного языка и наоборот, применение объектно-ориентированного языка вовсе не означает, что код автоматически становится объектно-ориентированным.
Современный объектно-ориентированный язык предлагает, как правило, следующий обязательный набор синтаксический средств:
Объявление классов с полями (данными – членами класса) и методами (функциями – членами класса);
Механизм расширения класса (наследования) – порождение нового класса от существующего с автоматическим включением всех особенностей реализации класса-предка в состав класса-потомка. Большинство ООП-языков поддерживают только единичное наследование;
Средства защиты внутренней структуры классов от несанкционированного использования извне. Обычно это модификаторы доступа к полям и методам, типа public, private, обычно также protected, иногда некоторые другие;
Полиморфные переменные и параметры функций (методов), позволяющие присваивать одной и той же переменной экземпляры различных классов.
Часть языков целиком построена вокруг объектных средств – в них любые данные являются объектами, любой код – методом какого-либо класса, и невозможно написать программу, в которой не использовались бы объекты. Другие языки (иногда используется термин «гибридные») включают ООП-подсистему в исходно процедурный язык. В них существует возможность программировать, не обращаясь к объектным средствам. Классические примеры – С++ и Delphi.
В данном курсовом проекте мы уделим своё внимание языку Java как одному их самых современных и развитых языков ООП.