
- •Разработка формализованной объектной модели и её программная реализация.
- •Классы в Java
- •Управление доступом к членам класса
- •Члены класса. Свойства (поля) класса
- •Методы класса
- •Конструкторы класса
- •Полиморфизм. Перегрузка и переопределение методов и конструкторов
- •Статические члены класса
- •Наследование.
- •Абстрактные классы
- •Интерфейсы
- •Приложение 1. Методы класса Object. Сборщик мусора.
Лабораторная работа № 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 контроль доступа реален, поскольку он осуществляется не только при компиляции, но и непосредственно перед запуском кодов на выполнение виртуальной машиной.