Класс — способ описания типа
Для описания типов в Java используется механизм классов. За исключением базовых (иначе — элементарных) типов (int, char, float и др.) и интерфейсов (что это такое, мы рассмотрим позже), все остальные типы — это классы.
В простейшем случае описание класса выглядит так
class MyClass {
. . . // тело класса
}
Здесь class — ключевое слово, MyClass — имя класса. Внутри фигурных скобок находится тело класса.
Тип | Описатель | Размер | Комментарий |
Логический | boolean | ?* | - |
Символьный | char | 2 байта | Unicode |
Байтовый | byte* | 1 байт | (-128 - 127) |
Короткий целый | short | 2 байта | (-215 — 215-1) |
Целый | int | 4 байта | (-231 — 231-1) |
Длинный целый | long | 8 байт | (-263 — 263-1) |
Вещественный | float | 4 байта | - |
Вещественный двойной точности | double | 8 байт | - |
Пустой | void* | - | - |
Любая модель данных должна включать три аспекта: структурный, целостный и манипуляционный. Посмотрим, как они реализуются на основе объектно-ориентированная парадигмы программирования:
Структура.
Структура объектной модели описываются с помощью трех ключевых понятий:
· инкапсуляция - каждый объект обладает некоторым внутренним состоянием (хранит внутри себя запись данных), а также набором методов - процедур, с помощью которых (и только таким образом) можно получить доступ к данным, определяющим внутреннее состояние объекта, или изменить их. Таким образом, объекты можно рассматривать как самостоятельные сущности, отделенные от внешнего мира.
Пример:
Class Point { // вводим новый тип данных - объект "точка" X,Y : int; // данные объекта - координаты точки .........Point(X : int, Y : int); //конструктор объекта - процедура, вызываемая // при определении переменной на базе объекта и // присваивающая значения его данным .........Draw(); //метод "нарисовать точку" Erase(); // метод "стереть точку"Move(newX,newY); //метод "переместить точку"(изменяет данные объекта)int GetX(); // метод "получить значение поля X"int GetY(); // метод "получить значение поля Y" ......... // все методы должны быть описаны, например // реализация метода Move: Move(newX : int, newY : int) { X=newX; // запись новых данных в объект Y=newY; // } } // конец описания объекта // основная процедура программы Point A(0,0); // создать новый объект и присвоить ему данные For(int i=0;i<100;i++){ // создать цикл A.Draw(); // нарисовать точку A.Hide(); // стереть точку A.Move(i,i*10); // присвоить экземпляру объекта новые данные } // print(A.GetX(),A.GetY()); // получить и напечатать данные объектаИз этого примера видно, что мы не можем напрямую обратиться к данным объекта, а должны вызывать метод Move для изменения его данных и GetX, GetY для считывания значений этих данных. Т.е. объект скрывает свою внутренню структуру, именно это свойство и называется "инкапсуляцией".
· наследование - подразумевает возможность создавать из классов объектов новые классы объекты, которые наследуют структуру и методы своих предков, добавляя к ним черты, отражающие их собственную индивидуальность. Наследование может быть простым (один предок) и множественным (несколько предков).
Пример:
Class Circle extend Point { // создаем новый объект "окружность", //наследующий свойства объекта "точка" Radius : int; // добавляем новое поле "радиус", поля X и Y наследуются// от родительского объекта ............. Circle(X:int,Y:int,Radius:int); // конструктор нового объекта ............. Draw(); // переопределяем некоторые методы Hide(); // родительского объекта, метод Move наследуется ............. ChangeRadius(Radius); // вводим новый метод "изменить радиус" ............. GetRadius(); // вводим новый метод "получить значение радиуса" // методы GetX и GetY наследуются от родительского // объекта}· полиморфизм - различные объекты могут по разному реагировать на одинаковые внешние события в зависимости от того, как реализованы их методы.
Пример:
Begin Point A(100,100); Circle B(200,200,50); A.Draw(); // рисует точку B.Draw(); // рисует окружностьEnd.Целостность данных:
Для поддержания целостности объектно-ориентированный подход предлагает использовать следующие средства:
· автоматическое поддержание отношений наследования;
· возможность объявить некоторые поля данных и методы объекта как "скрытые", не видимые для других объектов; такие поля и методы используются только методами самого объекта;
· создание процедур контроля целостности внутри объекта.
Дата добавления: 2016-01-07; просмотров: 1020;