SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
www.spro-club.ru
План
 Инкапсуляция
    интерфейс объекта
    правила доступа к данным класса
 Элементы классов и элементы объектов
 Наследование
   отношения специализации и обобщения
   ссылка super
   модификатор protected
Инкапсуляция
 Инкапсуляция (И) (encapsulation) – «заключение в
  капсулу» - ограничение доступа к содержимому
  «капсулы» извне и отсутствие такого ограничения
  внутри «капсулы»
 И – один из основных принципов ООП
 И - свойство языка программирования,
  позволяющее пользователю не задумываться о
  сложности реализации используемого
  программного компонента (то, что у него внутри),
 а взаимодействовать с ним посредством
  предоставляемого интерфейса (публичных
  методов и членов), а также объединить и защитить
  жизненно важные для компонента данные
Интерфейс объекта
 При соблюдении принципа инкапсуляции (И)
 пользователю предоставляется только
 спецификация (интерфейс) объекта
   Пользователь может взаимодействовать с объектом
    только через этот интерфейс. Реализуется с
    помощью ключевого слова: public
   Пользователь не может использовать закрытые
    данные и методы. Реализуется с помощью ключевых
    слов: private, protected
Правила доступа к данным класса
 Согласно принципу Инкапсуляции не
  рекомендуется давать доступ к данным
  (переменным) класса напрямую извне
 Пример открытых данных:
   public Rect {
       public int x1, x2;
   }
   Rect r = new Rect();
   r.x1 = 10;
Правила доступа к данным класса
 Рекомендуется закрывать все данные от прямого доступа
    извне (с помощью модификатора private)
   Доступ к данным должен осуществляться через специальные
    методы доступа (access methods) – «геттеры» (методы
    получения данных, Get) и «сеттеры» (методы установки
    данных, Set)
   Метод-получатель (геттер) должен возвращать значение того
    же типа, что и само поле и не имеет параметров
   Метод-присваиватель (сеттер) имеет тип void и принимает
    один параметр того же типа, что и само поле
   Примечание: NetBeans умеет автоматически создавать
    методы доступа. Для этого в окне редактора кода в
    контекстном меню выберите пункт «Реорганизация кода»
    (Refactoring) и подпункт «Инкапсулировать поля»
Пример методов доступа
 Пример:
    public Rect {
        private int x1, x2;
        public int getX1() {
             return x1;
          }

        public void setX1(int x1) {
            this.x1 = x1;
          }
        }
    Rect r = new Rect();
    r.setX1(10);
Применение инкапсуляции (И)
 И позволяет контролировать процессы изменения
  и считывания данных
 В методы доступа можно встроить условия
  проверки
   в присваивателе можно проверять переданное
    значение на попадание в область допустимых
    значений
   в получателе можно проверять, к примеру, права
    доступа к этим данным или вычислять значения и
    т.п.
Элементы класса и элементы объекта
 Методы объектов пользуются (имеют доступ) полями
  данных (атрибутами) объектов
 Атрибуты объекта – это обычные свойства
 Вызвать метод объекта можно только с помощью объектной
  переменной. Без создания объекта это сделать нельзя

 Методы класса могут пользоваться только атрибутами класса
 Чтобы создать атрибуты и методы класса, достаточно
  поставить модификатор static перед этими элементами
 Обратиться к элементам класса можно через имя класса, а не
  только через объект. Т.е. для этого создавать объект не
  нужно!
 Но! Элементы класса («статические») не могут получать
  доступ к элементам объекта
Пример элементов класса
 Многие стандартные классы из библиотеки Java имеют методы и
  атрибуты класса («статические»)
 Например, в классе Math много таких элементов
 Можно пользоваться ими, не создавая объект типа Math:
    double x = Math.sqrt(9);
    double y = Math.PI;
 С помощью переменных класса удобно создавать константы.
  Например:
 public class Consts {
    public static final double PI = 3.14;
    public static double len(double r) { return 2*PI*r; }
 }
 System.out.print(“Число ПИ = “ + Consts.PI);
 System.out.print(“Длина окружности = “ + Consts.len(4));
Специализация и обобщение
 Отношение специализации в русском языке
    выражается словом «является»
   Специализация – это уточнение
   Один объект является частным случаем другого (один
    объект специализирует другой)
   Специализация – конкретизация или уточнение
   Пример: Сотрудник ОА является сотрудником
    предприятия, программист является сотрудником ОА и
    т.д.
   Обобщение – вид отношений, обратный
    специализации
   Обобщение – переход на более абстрактный уровень
   Например, «любой программист является человеком»
Наследование
 Механизм построения иерархии классов
 Иерархия – отношение «предок»->«потомок»
  (родительский-дочерний классы, суперкласс-
  подкласс, порождающий-порождённый классы)
 Каждый порожденный класс иерархии имеет доступ к
  коду и данным всех порождающих классов (к
  элементом, разрешённым установленной областью
  видимости)
 Наследование – мощный механизм повторного
  использования программного кода
Наследование в Java
 Для того, чтобы указать, что один класс является
    потомком (производным) от другого класса,
    необходимо после его имени поставить ключевое
    слово extends и имя родительского класса:
   public class дочерний_класс extends
    родительский_класс
   {
   }
   Модификатор доступа protected позволяет открыть
    члены класса всем потомкам этого класса, для
    остальных они остаются недоступными
Ссылка super
 В чём-то похожа на this
 Ссылается на родительский класс
 Можно применять двумя способами:
    получать доступ к открытым (public) и защищённым
     (protected) элементам родительского класса
       например, super.x1 = 10;
   вызывать конструктор родительского класса. Вызов
    конструктора родит.элемента super должен быть
    первым выражением в конструкторе дочернего
    элемента:
       public Square(Graphics g) { super(g); }
Модификатор protected
 Делает элементы невидимыми извне класса
 Эти элементы могут быть доступны в дочерних
  классах
 в отличие от элементов с private-доступом, кот. в
  дочерних классах не видны
Пример: иерархия
геометрических фигур
 Среди геом.фигур можно выделить отношения
  обобщения-специализации
 Например, квадрат является ромбом с прямыми
  углами
 Квадрат является прямоугольником с одинаковыми
  сторонами
 Круг является эллипсом с одинаковыми радиусами
Пакеты в Java
 Пакет (package) – это способ группировки классов
    по функциональному назначению
   Пакеты Java обеспечивают уникальные
    пространства имен
   Пакеты могут образовывать иерархическую
    древовидную структуру
   Пакет верхнего уровня проекта должен иметь
    уникальное имя, не совпадающее с именами других
    глобальных пакетов проекта
   Пакеты нижнего уровня обычно связаны с
    функциональным назначением классов,
    находящихся в данном пакете
   Пакет, который содержит группу классов,
    объединяет их по некоторому смыслу
Пакеты в Java (продолжение)
   В пакет объединяются классы, сходные по
    функциональному назначению
   Реализуют принцип модульности
   Полное имя класса включает имена пакета и всех
    подпакетов, в котором он описан
Project_DIR
   |
   |-- classes
   |       `-- zoostore                      Структура директорий, в которых
   |              |-- model                  хранятся файлы классов, должна
   |              |     `-- Cat.class
                                             соответствовать структуре
   |              |
   |              `-- test                   пакетов.
   |                    `-- TestCats.class
   |                                         При этом желательно файлы
   `-- src
        `-- zoostore
                                             исходных кодов и файлы классов
                |-- model                    размещать отдельно, что
                |     `-- Cat.java           повышает управляемость
                |
                `-- test
Описание пакета
 Указать имя пакета, в котором находится класс,
 можно с помощью директивы package
   package carspack;
 Она должна быть самой первой командой в файле
 До неё могут находиться только комментарии и
  пустые строки
 Если директива package не указана в файле, то
  классы из него всё равно помещаются в пакет по
  умолчанию с именем default
 Примечание: имена пакетов принято указывать в
  нижнем регистре
Директива import
 Позволяет включать один класс или все классы
  пакета в текущий файл
 Это позволяет использовать короткие имена
  классов
 Пример:
   import java.util.Random; // подключение класса
   import java.awt.*; // подключение всех классов пакета
Задание
 Просмотреть 2 презентации
 Изучить пример
 Реализовать методы класса Ellipse для вычисления
  площади и длины
 Создать класс Circle – круг – путём наследования от
  класса Ellipse (на примере иерархии Rectangle-
  >Square)

Weitere ähnliche Inhalte

Was ist angesagt?

Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Anton Moiseenko
 
Java core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptAnton Moiseenko
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. ПеречисленияюUnguryan Vitaliy
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroAnton Moiseenko
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...metaform
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.Igor Shkulipa
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.Igor Shkulipa
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.Unguryan Vitaliy
 
C++ осень 2013 лекция 5
C++ осень 2013 лекция 5C++ осень 2013 лекция 5
C++ осень 2013 лекция 5Technopark
 

Was ist angesagt? (11)

Uml
UmlUml
Uml
 
Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
Java core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.ppt
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. Перечисленияю
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. Intro
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.
 
C++ осень 2013 лекция 5
C++ осень 2013 лекция 5C++ осень 2013 лекция 5
C++ осень 2013 лекция 5
 

Ähnlich wie Лекция 6_принципы ООП : инкапсуляция, наследование

C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.Igor Shkulipa
 
Lec 2 Java
Lec 2 JavaLec 2 Java
Lec 2 Javaitc73
 
принципы объектного подхода
принципы объектного подходапринципы объектного подхода
принципы объектного подходаAndrey Radionov
 
C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5Technopark
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.Igor Shkulipa
 
03 - Java. Объекты, классы и пакеты в Java
03 - Java. Объекты, классы и пакеты в Java03 - Java. Объекты, классы и пакеты в Java
03 - Java. Объекты, классы и пакеты в JavaRoman Brovko
 
C++ осень 2012 лекция 2
C++ осень 2012 лекция 2C++ осень 2012 лекция 2
C++ осень 2012 лекция 2Technopark
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.genericsmuqaddas_m
 
Msu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And UmlMsu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And Umlolegol
 
02 - Классы и Объекты
02 - Классы и Объекты02 - Классы и Объекты
02 - Классы и Объектыphearnot
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.Unguryan Vitaliy
 
C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.Igor Shkulipa
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.Igor Shkulipa
 
Msu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And ObjectsMsu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And Objectsolegol
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.Igor Shkulipa
 

Ähnlich wie Лекция 6_принципы ООП : инкапсуляция, наследование (20)

Step 3.2
Step 3.2Step 3.2
Step 3.2
 
Step 3.1
Step 3.1Step 3.1
Step 3.1
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.
 
Классы и объекты С#
Классы и объекты С#Классы и объекты С#
Классы и объекты С#
 
Lec 2
Lec 2Lec 2
Lec 2
 
Lec 2 Java
Lec 2 JavaLec 2 Java
Lec 2 Java
 
Наследование и полиморфизм
Наследование и полиморфизмНаследование и полиморфизм
Наследование и полиморфизм
 
принципы объектного подхода
принципы объектного подходапринципы объектного подхода
принципы объектного подхода
 
C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
03 - Java. Объекты, классы и пакеты в Java
03 - Java. Объекты, классы и пакеты в Java03 - Java. Объекты, классы и пакеты в Java
03 - Java. Объекты, классы и пакеты в Java
 
C++ осень 2012 лекция 2
C++ осень 2012 лекция 2C++ осень 2012 лекция 2
C++ осень 2012 лекция 2
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.generics
 
Msu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And UmlMsu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And Uml
 
02 - Классы и Объекты
02 - Классы и Объекты02 - Классы и Объекты
02 - Классы и Объекты
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
 
C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
 
Msu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And ObjectsMsu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And Objects
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
 

Mehr von metaform

Приступаем к разработке Android приложений
Приступаем к разработке Android приложенийПриступаем к разработке Android приложений
Приступаем к разработке Android приложенийmetaform
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Javametaform
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтовmetaform
 
Составление резюме
Составление резюмеСоставление резюме
Составление резюмеmetaform
 
Коллекции в Java
Коллекции в JavaКоллекции в Java
Коллекции в Javametaform
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
Базовые операторы Java
Базовые операторы JavaБазовые операторы Java
Базовые операторы Javametaform
 
Глава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в JavaГлава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в Javametaform
 
Глава1: Обзор технологии Java
Глава1: Обзор технологии JavaГлава1: Обзор технологии Java
Глава1: Обзор технологии Javametaform
 
Мастерство речи, искусство презентации
Мастерство речи, искусство презентацииМастерство речи, искусство презентации
Мастерство речи, искусство презентацииmetaform
 

Mehr von metaform (10)

Приступаем к разработке Android приложений
Приступаем к разработке Android приложенийПриступаем к разработке Android приложений
Приступаем к разработке Android приложений
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Java
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтов
 
Составление резюме
Составление резюмеСоставление резюме
Составление резюме
 
Коллекции в Java
Коллекции в JavaКоллекции в Java
Коллекции в Java
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
Базовые операторы Java
Базовые операторы JavaБазовые операторы Java
Базовые операторы Java
 
Глава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в JavaГлава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в Java
 
Глава1: Обзор технологии Java
Глава1: Обзор технологии JavaГлава1: Обзор технологии Java
Глава1: Обзор технологии Java
 
Мастерство речи, искусство презентации
Мастерство речи, искусство презентацииМастерство речи, искусство презентации
Мастерство речи, искусство презентации
 

Лекция 6_принципы ООП : инкапсуляция, наследование

  • 2. План  Инкапсуляция  интерфейс объекта  правила доступа к данным класса  Элементы классов и элементы объектов  Наследование  отношения специализации и обобщения  ссылка super  модификатор protected
  • 3. Инкапсуляция  Инкапсуляция (И) (encapsulation) – «заключение в капсулу» - ограничение доступа к содержимому «капсулы» извне и отсутствие такого ограничения внутри «капсулы»  И – один из основных принципов ООП  И - свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента (то, что у него внутри),  а взаимодействовать с ним посредством предоставляемого интерфейса (публичных методов и членов), а также объединить и защитить жизненно важные для компонента данные
  • 4. Интерфейс объекта  При соблюдении принципа инкапсуляции (И) пользователю предоставляется только спецификация (интерфейс) объекта  Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью ключевого слова: public  Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов: private, protected
  • 5. Правила доступа к данным класса  Согласно принципу Инкапсуляции не рекомендуется давать доступ к данным (переменным) класса напрямую извне  Пример открытых данных:  public Rect {  public int x1, x2;  }  Rect r = new Rect();  r.x1 = 10;
  • 6. Правила доступа к данным класса  Рекомендуется закрывать все данные от прямого доступа извне (с помощью модификатора private)  Доступ к данным должен осуществляться через специальные методы доступа (access methods) – «геттеры» (методы получения данных, Get) и «сеттеры» (методы установки данных, Set)  Метод-получатель (геттер) должен возвращать значение того же типа, что и само поле и не имеет параметров  Метод-присваиватель (сеттер) имеет тип void и принимает один параметр того же типа, что и само поле  Примечание: NetBeans умеет автоматически создавать методы доступа. Для этого в окне редактора кода в контекстном меню выберите пункт «Реорганизация кода» (Refactoring) и подпункт «Инкапсулировать поля»
  • 7. Пример методов доступа  Пример:  public Rect {  private int x1, x2;  public int getX1() {  return x1;  }  public void setX1(int x1) {  this.x1 = x1;  }  }  Rect r = new Rect();  r.setX1(10);
  • 8. Применение инкапсуляции (И)  И позволяет контролировать процессы изменения и считывания данных  В методы доступа можно встроить условия проверки  в присваивателе можно проверять переданное значение на попадание в область допустимых значений  в получателе можно проверять, к примеру, права доступа к этим данным или вычислять значения и т.п.
  • 9. Элементы класса и элементы объекта  Методы объектов пользуются (имеют доступ) полями данных (атрибутами) объектов  Атрибуты объекта – это обычные свойства  Вызвать метод объекта можно только с помощью объектной переменной. Без создания объекта это сделать нельзя  Методы класса могут пользоваться только атрибутами класса  Чтобы создать атрибуты и методы класса, достаточно поставить модификатор static перед этими элементами  Обратиться к элементам класса можно через имя класса, а не только через объект. Т.е. для этого создавать объект не нужно!  Но! Элементы класса («статические») не могут получать доступ к элементам объекта
  • 10. Пример элементов класса  Многие стандартные классы из библиотеки Java имеют методы и атрибуты класса («статические»)  Например, в классе Math много таких элементов  Можно пользоваться ими, не создавая объект типа Math:  double x = Math.sqrt(9);  double y = Math.PI;  С помощью переменных класса удобно создавать константы. Например:  public class Consts {  public static final double PI = 3.14;  public static double len(double r) { return 2*PI*r; }  }  System.out.print(“Число ПИ = “ + Consts.PI);  System.out.print(“Длина окружности = “ + Consts.len(4));
  • 11. Специализация и обобщение  Отношение специализации в русском языке выражается словом «является»  Специализация – это уточнение  Один объект является частным случаем другого (один объект специализирует другой)  Специализация – конкретизация или уточнение  Пример: Сотрудник ОА является сотрудником предприятия, программист является сотрудником ОА и т.д.  Обобщение – вид отношений, обратный специализации  Обобщение – переход на более абстрактный уровень  Например, «любой программист является человеком»
  • 12. Наследование  Механизм построения иерархии классов  Иерархия – отношение «предок»->«потомок» (родительский-дочерний классы, суперкласс- подкласс, порождающий-порождённый классы)  Каждый порожденный класс иерархии имеет доступ к коду и данным всех порождающих классов (к элементом, разрешённым установленной областью видимости)  Наследование – мощный механизм повторного использования программного кода
  • 13. Наследование в Java  Для того, чтобы указать, что один класс является потомком (производным) от другого класса, необходимо после его имени поставить ключевое слово extends и имя родительского класса:  public class дочерний_класс extends родительский_класс  {  }  Модификатор доступа protected позволяет открыть члены класса всем потомкам этого класса, для остальных они остаются недоступными
  • 14. Ссылка super  В чём-то похожа на this  Ссылается на родительский класс  Можно применять двумя способами:  получать доступ к открытым (public) и защищённым (protected) элементам родительского класса  например, super.x1 = 10;  вызывать конструктор родительского класса. Вызов конструктора родит.элемента super должен быть первым выражением в конструкторе дочернего элемента:  public Square(Graphics g) { super(g); }
  • 15. Модификатор protected  Делает элементы невидимыми извне класса  Эти элементы могут быть доступны в дочерних классах  в отличие от элементов с private-доступом, кот. в дочерних классах не видны
  • 16. Пример: иерархия геометрических фигур  Среди геом.фигур можно выделить отношения обобщения-специализации  Например, квадрат является ромбом с прямыми углами  Квадрат является прямоугольником с одинаковыми сторонами  Круг является эллипсом с одинаковыми радиусами
  • 17. Пакеты в Java  Пакет (package) – это способ группировки классов по функциональному назначению  Пакеты Java обеспечивают уникальные пространства имен  Пакеты могут образовывать иерархическую древовидную структуру  Пакет верхнего уровня проекта должен иметь уникальное имя, не совпадающее с именами других глобальных пакетов проекта  Пакеты нижнего уровня обычно связаны с функциональным назначением классов, находящихся в данном пакете  Пакет, который содержит группу классов, объединяет их по некоторому смыслу
  • 18. Пакеты в Java (продолжение)  В пакет объединяются классы, сходные по функциональному назначению  Реализуют принцип модульности  Полное имя класса включает имена пакета и всех подпакетов, в котором он описан Project_DIR | |-- classes | `-- zoostore Структура директорий, в которых | |-- model хранятся файлы классов, должна | | `-- Cat.class соответствовать структуре | | | `-- test пакетов. | `-- TestCats.class | При этом желательно файлы `-- src `-- zoostore исходных кодов и файлы классов |-- model размещать отдельно, что | `-- Cat.java повышает управляемость | `-- test
  • 19. Описание пакета  Указать имя пакета, в котором находится класс, можно с помощью директивы package  package carspack;  Она должна быть самой первой командой в файле  До неё могут находиться только комментарии и пустые строки  Если директива package не указана в файле, то классы из него всё равно помещаются в пакет по умолчанию с именем default  Примечание: имена пакетов принято указывать в нижнем регистре
  • 20. Директива import  Позволяет включать один класс или все классы пакета в текущий файл  Это позволяет использовать короткие имена классов  Пример:  import java.util.Random; // подключение класса  import java.awt.*; // подключение всех классов пакета
  • 21. Задание  Просмотреть 2 презентации  Изучить пример  Реализовать методы класса Ellipse для вычисления площади и длины  Создать класс Circle – круг – путём наследования от класса Ellipse (на примере иерархии Rectangle- >Square)