Наследование, композиция, агрегация



страница4/4
Дата12.02.2020
Размер0.5 Mb.
Название файлаооп.docx
ТипСтатья
1   2   3   4

Техническая реализация


На самом деле каких-либо сложных и высокоумных технических решений нет — все достаточно тривиально. В одном классе делается ссылка на другой и наоборот (не всегда). Дальше идет развитие данной идеи в зависимости например от количества связей. В машине четыре колеса и она имеет связь со всеми — значит в машине будет ссылка на список колес (или массив). Давайте соединим нашего робота с оператором, который им управляет. Между ними можно установить ассоциацию через ссылки в одном классе на другой класс. Т.е. класс Robot имеет ссылку на класс Operator и наоборот — класс Operator имеет ссылку на класс Robot.

Класс Robot





1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



19

20

21



22

23

24



25

26

27



28

29

30



31

32

33



34

35

36



37

38

39



40

41

42



43

44

45



46

47

48



49

50


package edu.javacourse.robot;

 

public class Robot



{

    private double x = 0;

    private double y = 0;

    protected double course = 0;

    // Робот управляется оператором

    private Operator operator;

 

    public Robot(double x, double y) {



        this.x = x;

        this.y = y;

    }

 

    // Можно узнать какой оператор управляет роботом



    public Operator getOperator() {

        return operator;

    }

 

    // Можно установить оператора для робота



    public void setOperator(Operator operator) {

        this.operator = operator;

    }

 

    public void forward(int distance) {



        x = x + distance * Math.cos(course / 180 * Math.PI);

        y = y + distance * Math.sin(course / 180 * Math.PI);

    }

 

    public double getX() {



        return x;

    }


 

    public double getY() {

        return y;

    }


 

    public double getCourse() {

        return course;

    }


 

    public void setCourse(double course) {

        this.course = course;

    }


 

    public void printCoordinates() {

        System.out.println(x + "," + y);

    }


}

Класс Operator



1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



19

20

21



22

23

24



25

26

27



28

29

30



31

32


package edu.javacourse.robot;

 

public class Operator



{

    private String firstName;

    private String lastName;

    // Оператор управляет конкретным роботом

    private Robot robot;

 

    public Operator(String firstName, String lastName) {



        this.firstName = firstName;

        this.lastName = lastName;

    }

 

    public String getFirstName() {



        return firstName;

    }


 

    public String getLastName() {

        return lastName;

    }


 

    // У оператора можно спросить каким роботом он управляет

    public Robot getRobot() {

        return robot;

    }

 

    // Оператору можно поручить управлять роботом



    public void setRobot(Robot robot) {

        this.robot = robot;



    }

}


Чего-то другого человечество пока не придумало. Как я уже упоминал, можно несколько разнообразить виды ссылок, но идея останется прежней. Можно делать ссылки только в одном классе — тогда связь будет односторонняя, может быть несколько ссылок или ссылка на список (массив). Но все равно сказать одному классу, что он связан с другим можно только по такому принципу.
Кстати, когда мы размещали наши компоненты с овалом, прямоугольником на форме, то тут можно говорить о композиции — форма содержит внутри себя список компонентов класса JComponent для хранения всех компонентов, которые ей передают.

Еще один способ взаимодействия объектов


Эта ситуация возникает тогда, когда постоянной связи между объектами не предусматривается вообще, но какие-то данные надо передать от одного другому. Можно воспользоваться вариантом передачи объекта прямо в методе. Например, наш робот может иметь метод, который принимает данные из другого робота — его координаты — для того, чтобы туда переместиться. Значит надо сделать метод, который в качестве параметра будет иметь объект класса Robot.
Как видите все достаточно банально и просто. Мы очень скоро столкнемся с этими понятиями при рассмотрении примеров.

Поделитесь с Вашими друзьями:
1   2   3   4


База данных защищена авторским правом ©genew.ru 2020
обратиться к администрации

    Главная страница
Контрольная работа
Курсовая работа
Лабораторная работа
Рабочая программа
Методические указания
Практическая работа
Методические рекомендации
Теоретические основы
Пояснительная записка
Общая характеристика
Учебное пособие
История развития
Общие сведения
Физическая культура
Теоретические аспекты
Практическое задание
Федеральное государственное
Направление подготовки
Теоретическая часть
Техническое задание
Самостоятельная работа
Дипломная работа
Общие положения
Методическая разработка
государственное бюджетное
Образовательная программа
квалификационная работа
Выпускная квалификационная
Технологическая карта
Техническое обслуживание
Решение задач
учебная программа
Методическое пособие
История возникновения
Краткая характеристика
Исследовательская работа
Рабочая учебная
Общие требования
Общая часть
История создания
Основная часть
Метрология стандартизация
Рабочая тетрадь
Название дисциплины
Техническая эксплуатация
Информационная безопасность
Современное состояние
Государственное регулирование
Математическое моделирование
Экономическая теория
Организация работы