Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
23.11.2024
Размер:
111.62 Кб
Скачать

Лабораторная работа № 2

Разработка формализованной объектной модели и её программная реализация.

Цель работы: 1) научиться создавать собственные классы в языке Java. 2) освоить на практике основные принципы ООП.

Продолжительность работы: 4 часа.

Оглавление

Классы в Java 1

Управление доступом к членам класса 3

Члены класса. 4

Свойства (поля) класса 4

Методы класса 4

Конструкторы класса 6

Полиморфизм. Перегрузка и переопределение методов и конструкторов 6

Статические члены класса 7

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

Абстрактные классы 13

Интерфейсы 16

ПРИЛОЖЕНИЕ 1. Методы класса Object. Сборщик мусора. 23

Классы в Java

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

Объекты создаются посредством выражений, в которых используется ключевое слово new. Созданные на основе определения класса объекты – это экземпляры (instances) данного класса. Объекты размещаются в области системной памяти – куче. Доступ к любому объекту осуществляется с помощью ссылки на объект (вместо самого объекта в переменных содержится лишь ссылка на него). Каждый новый объект класса обладает собственной копией его полей, и поля объектов называют переменными экземпляра (instance variables).

Простейшее описание класса в языке Java имеет вид:

class class_name {

// описание класса

}

Основными элементами класса являются: свойства (поля), методы, конструкторы.

class Test {

private String Temp; //свойство невидимое снаружи из-за модификатора private

//конструктор без параметра — устанавливает значение свойства Temp

Test() {

this.Temp = “”;

}

//конструктор с параметром — устанавливает значение свойства Temp

Test(String s) {

setTemp(String s);

}

//метод установки свойства Temp

public void setTemp(String s) {

this.Temp = s;

}

//метод возвращает значение свойства Temp

public String getTemp() {

this.Temp = s;

}

//метод печатает

public void printTemp() {

System.out.Pintln(“Значение переменной Temp - ”+this.Temp);

}

}

Создание объекта класса с именем Test

Test MIET = new Test(); //Создаем объект класса с именем MIET

MIET.setTemp(“МИЭТ”); //Добавляем текст во внутреннюю переменную Temp

MIET.printTemp(); //Выводим содержимое переменной Temp на консоль

Управление доступом к членам класса

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

  • Открытый (Public): к членам класса всегда можно обращаться из любого места, в котором доступен сам класс; такие члены наследуются в подклассах.

  • Закрытый (Private): доступ к членам класса осуществляется только из самого класса.

  • Защищенный (Protected): к данным членам разрешается доступ из подклассов и из функций, входящих в тот же пакет. Такие члены наследуются подклассами.

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

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