Главная страница
Навигация по странице:

  • Задание лабораторной работы №6. Используя предыдущие задачи лабораторных работ написать программы на Java нужно с применением

  • Лабораторная работа 6. Объектная модель Java


    Скачать 172.16 Kb.
    НазваниеЛабораторная работа 6. Объектная модель Java
    Дата14.12.2022
    Размер172.16 Kb.
    Формат файлаpdf
    Имя файла#6 LAB.pdf
    ТипЛабораторная работа
    #845497

    Лабораторная работа №6.
    Объектная модель Java. Наследование классов. Организация наследования.
    Ключевое слово protected. Модификаторы наследования: public, private и protected. Права доступа при наследовании.
    Цель работы: Используя принципы ООП писать программы на языке Java.
    Абстракция. Наследование.
    Java является объектно-ориентированным языком. Это означает, что писать программы на Java нужно с применением объектно-ориентированного стиля. И стиль этот основан на использовании в программе объектов и классов.
    Основные принципы ООП:

    Абстракция

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

    Инкапсуляция

    Полиморфизм
    Попробуем с помощью примеров разобраться, что такое классы и объекты, а также с тем, как применять на практике основные принципы ООП: абстракцию, наследование, полиморфизм и инкапсуляцию.
    Что такое объект?
    Мир, в котором мы живем, состоит из объектов. Если мы посмотрим вокруг, то увидим, что нас окружают дома, деревья, автомобили, мебель, посуда, компьютеры. Все эти предметы являются объектами, и каждый из них обладает набором определенных характеристик, поведением и назначением. Мы привыкли к объектам, и мы их используем всегда для вполне конкретных целей. Например, если нам необходимо доехать до работы, мы пользуемся автомобилем, если захотим поесть – посудой, а если отдохнуть – нам понадобится удобный диван.
    Человек привык мыслить объектно для решения задач в повседневной жизни. Это послужило одной из причин использования объектов в программировании, а такой подход к созданию программ назвали объектно-ориентированным.
    Приведём пример. Представьте, что вы разработали новую модель телефона и хотите наладить её серийное производство. Как разработчик телефона, вы знаете для чего он нужен, как он будет функционировать, и из каких деталей он будет состоять (корпус, микрофон, динамик, провода, кнопки и т.д.). При этом только вы знаете, как соединить эти детали. Однако вы не планируете выпускать телефоны лично, для этого у вас есть целый штат работников. Чтобы вам не пришлось каждый раз объяснять, как соединить детали телефона, и чтобы все телефоны при производстве получались одинаковыми, прежде чем начать их выпуск, вам понадобиться сделать чертеж в виде описания устройства телефона.
    В ООП такое описание, чертеж, схема или шаблон называется классом, из которого при выполнении программы создается объект.
    Класс — это описание еще не созданного
    объекта, как бы общий шаблон, состоящий из полей, методов и конструктора, а объект – экземпляр класса, созданный на основе этого описания.
    Абстракция ООП
    Давайте теперь подумаем, как нам перейти от объекта из реального мира к объекту в программе на примере телефона. История этого средства связи превышает 100 лет и современный телефон, в отличие от своего предшественника из 19 века, представляет собой куда более сложное устройство.
    Когда мы пользуемся телефоном, то не задумываемся о его устройстве и процессах, происходящих внутри него. Мы просто используем функции, предоставленные разработчиками телефона — кнопки или сенсорный экран для выбора номера и совершения вызовов. Одним из первых интерфейсов телефона была рукоятка, которую нужно было вращать, чтобы сделать вызов. Разумеется, это было не очень удобно. Тем не менее, свою функцию рукоять исправно выполняла. Если посмотреть на самый современный и на самый первый телефон, можно сразу выделить самые важные детали, которые важны и для устройства конца 19-го века, и для суперсовременного смартфона. Это совершение вызова
    (набор номера) и приём вызова. По сути это то, что делает телефон телефоном, а не чем-то другим. Сейчас мы применили принцип в ООП — выделение наиболее важных характеристик и информации об объекте.
    Этот принцип ООП называется абстракцией.
    Абстракцию в ООП можно также определить, как способ представления элементов задачи из реального мира в виде объектов в программе.
    Абстракция всегда связана с обобщением некоторой информации о свойствах предметов или объектов, поэтому главное — это отделить значимую информацию от незначимой в контексте решаемой задачи. При этом уровней абстракции может быть несколько. Попробуем применить принцип абстракции к нашим телефонам. Для начала выделим наиболее распространённые типы телефонов от самых первых и до наших дней. Например, их можно представить в виде диаграммы, приведенной на рисунке 1.
    Теперь с помощью абстракции мы можем выделить в этой иерархии объектов общую информацию: общий абстрактный тип объектов — телефон, общую
    характеристику телефона — год его создания, и общий интерфейс — все телефоны способны принимать и посылать вызовы. Вот как это выглядит на Java:
    public
    abstract
    class
    AbstractPhone {
    private
    int
    year;
    public
    AbstractPhone(
    int
    year) {
    this
    .year = year;
    }
    public
    abstract
    void
    call
    (
    int
    outputNumber);
    public
    abstract
    void
    ring (
    int
    inputNumber);
    }
    На основании этого абстрактного класса мы сможем создавать в программе новые типы телефонов с использованием других базовых принципов ООП Java, которые рассмотрим ниже.
    Наследование
    Давайте посмотрим еще раз на диаграмму телефонов. Можно заметить, что она представляет собой иерархию, в которой модель, расположенная ниже обладает всеми признаками моделей, расположенных выше по ветке, плюс своими собственными. Например, смартфон, использует сотовую сеть для связи
    (обладает свойствами сотового телефона), является беспроводным и переносным
    (обладает свойствами беспроводного телефона) и может принимать и делать вызовы (свойствами телефона). В этом случае мы можем говорить о наследовании свойств объекта.
    В программировании наследование заключается в использовании уже существующих классов для описания новых.
    Рассмотрим пример создания класса смартфон с помощью наследования. Все беспроводные телефоны работают от аккумуляторных батарей, которые имеют определенный ресурс работы в часах. Поэтому добавим это свойство в класс беспроводных телефонов:
    public
    abstract
    class
    WirelessPhone
    extends
    AbstractPhone {
    private
    int
    hour;
    public
    WirelessPhone(
    int
    year,
    int
    hour) {
    super
    (year);
    this
    .hour = hour;
    }
    }
    Сотовые телефоны наследуют свойства беспроводного телефона, мы также добавили в этот класс реализацию методов call и ring
    :
    public
    class
    CellPhone
    extends
    WirelessPhone {
    public
    CellPhone(
    int
    year,
    int
    hour) {
    super
    (year, hour);
    }
    @Override
    public
    void
    call
    (
    int
    outputNumber) {
    System.out.
    println
    (
    "Вызываю номер "
    + outputNumber);
    }
    @Override
    public
    void
    ring
    (
    int
    inputNumber) {
    System.out.
    println
    (
    "Вам звонит абонент "
    + inputNumber);
    }
    }

    И, наконец, класс смартфон, который в отличие от классических сотовых телефонов имеет полноценную операционную систему. В смартфон можно добавлять новые программы, поддерживаемые данной операционной системой, расширяя, таким образом, его функциональность. С помощью кода класс можно описать так:

    public
    class
    Smartphone
    extends
    CellPhone {


    private
    String operationSystem;


    public
    Smartphone(
    int
    year,
    int
    hour, String operationSystem) {

    super
    (year, hour);

    this
    .operationSystem = operationSystem;
    • }

    public
    void
    install
    (String program){
    • System.out.
    println
    (
    "Устанавливаю "
    + program +
    "для"
    + operationSystem);
    • }

    • }
    Как видите, для описания класса Smartphone мы создали совсем немного нового кода, но получили новый класс с новой функциональностью.
    Использование принципа наследование ООП позволяет значительно уменьшить объем кода, а значит, и облегчить работу программисту.
    Список литературы:
    1. https://javarush.ru/groups/posts/principy-oop
    2. Г.И. Радченко, Е.А. Захаров ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ
    ПРОГРАММИРОВАНИЕ. Конспект лекций. Челябинск. Издательский центр
    ЮУрГУ, 2013 г.
    Задание лабораторной работы №6.
    Используя предыдущие задачи
    лабораторных работ написать программы на Java нужно с применением
    объектно-ориентированного стиля. И стиль этот основан на
    использовании в программе объектов и классов, а также с тем, как
    применять на практике основные принципы ООП: абстракцию,
    наследование.


    написать администратору сайта