Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovoy_proekt_Lapina (1).docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
63.08 Кб
Скачать

Санкт-петербургский государственный политехнический университет

Кафедра Информационные системы в экономике и менеджменте

Курсовой проект

Выполнила студентка гр. 1074/2 Лапина Виталия

Руководитель и преподаватель Чанцев Валерий Петрович

Санкт-Петербург

2011 г.

Содержание:

  1. Введение…………………………………………………………................ 3

  2. Принципы объектно-ориентированного программирования………….. 4

  3. Особенности языка Java………………………………………………………………..................7

  4. Описание кода программы…………………………………………………………………9

  5. Заключение……………………………………………………………….12

Введение

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

Для реализации поставленной цели необходимо выполнить следующие задачи:

  1. Определить общие принципы объектно-ориентированного программирования.

  2. Описать особенного языка Java.

  3. Написать код для программы.

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

В соответствии с поставленными задачами работа имеет следующую структуру:

Часть 1: Описание принципов и основных понятий объектно-ориентированного программирования.

Часть 2: Описание особенностей языка Java, его достоинств и недостатков.

Часть 3: Описание кода программы. Принципы объектно-ориентированного программирования

Объектно-ориентированное, или объектное, программирование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

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

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

Описание каждой модели производится в виде одного или нескольких классов (classes). Класс можно считать проектом, слепком, чертежом, по которому затем будут создаваться конкретные объекты. Класс содержит описание переменных и констант,характеризующих объект. Они называются полями классов (class fields).

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

Процедуры, описывающие поведение объекта, называются методами классов (class methods). Они определяют действия, которые можно выполнять над объектами определённого типа и которые сам объект может выполнять. Внутри класса можно описать и вложенные классы (nested classes) и вложенные интерфейсы.

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

В Java нет вложенных процедур и функций, в теле метода нельзя описать другой метод. После того как описание класса закончено, можно создавать конкретные объекты, экземпляры (instances) описанного класса. Создание экземпляров производится в три этапа, подобно описанию массивов. Сначала объявляются ссылки на объекты: записывается имя класса, и через пробел перечисляются экземпляры класса, точнее, ссылки на них. Затем операцией new определяются сами объекты, под них выделяется оперативная память, ссылка получает адрес этого участка в качестве своего значения. На третьем этапе происходит инициализация объектов, задаются начальные значения. Этот этап, как правило, совмещается со вторым, именно для этого в операции new повторяется имя класса со скобками . Это так называемый конструктор (constructor) класса, но о нем поговорим попозже.

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

Кроме того, каждый из созданных объектов должен брать на себя ответственность за свои поля и методы. Например, объект № 1,выполняя свой метод, посылает сообщение другому объекту №2 с просьбой выполнить метод А. Этим сообщением заключается контракт (contract) между объектами, суть которого в том, что объект №1 берет на себя ответственность (responsibility) задать правильные параметры в сообщении, а объект №2 возлагает на себя ответственность применить метод, каким бы он ни был.

Для того, чтобы правильно реализовать принцип ответственности, применяется ещё один принцип объектно-ориентированного программирования – модульность (modularity). Этот принцип утверждает: каждый класс должен составлять отдельный модуль. Члены класса, к которым не планируется обращение извне, должны быть инкапсулированы. Инкапсуляция – это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

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

  1. Абстракция;

  2. Ответственность;

  3. Иерархия;

  4. Модульность .

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

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

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

  1. Объявление классов с полями (данными – членами класса) и методами (функциями – членами класса);

  2. Механизм расширения класса (наследования) – порождение нового класса от существующего с автоматическим включением всех особенностей реализации класса-предка в состав класса-потомка. Большинство ООП-языков поддерживают только единичное наследование;

  3. Средства защиты внутренней структуры классов от несанкционированного использования извне. Обычно это модификаторы доступа к полям и методам, типа public, private, обычно также protected, иногда некоторые другие;

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

Часть языков целиком построена вокруг объектных средств – в них любые данные являются объектами, любой код – методом какого-либо класса, и невозможно написать программу, в которой не использовались бы объекты. Другие языки (иногда используется термин «гибридные») включают ООП-подсистему в исходно процедурный язык. В них существует возможность программировать, не обращаясь к объектным средствам. Классические примеры – С++ и Delphi.

В данном курсовом проекте мы уделим своё внимание языку Java как одному их самых современных и развитых языков ООП.