Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kolokvium_1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
119.81 Кб
Скачать

  1. Загальні положення об’єктно-орієнтованої парадигми програмування

Фундаментальная концепция – передача сообщений объектам.

Компоненты парадигмы:объект;сообщениекласс;наследование; метод.

Язык ООП должен обладать свойствами:абстракции;инкапсуляции; наследования;полиморфизма.

Языку ООП желательно иметь: возможности расширения; повторного использования программных компонент;параметризации; некоторые формы коллекций

  1. Основні поняття ООП

Инкапсуляция – способ внутренней организации объекта, когда состояние объекта может бать изменено опосредственно, при помощи собственных методов этого объекта(доступ к арибутивной модели должен бать запрещён, защищает атрибутивную модель и детали реализации объекта от вмешательства извне .

Наследованием (из класса в класс (получатель)) называ-ется способ описания системы классов, при помощи которого в классе неявно определяются поля и методы другого класса таким образом, как если бы они были опре-делены непосредственно в первом классе. В этом случае класс называют су-перклассом, а второй класс – подклассом. Наследование «работает» только в одном направлении. Подкласс может наследовать поля и методы у суперкласса, но суперкласс не может наследовать поля и методы у подкласса.

Полиморфизм – множество форм,

Полиморфизм метода означает, что в нескольких классах могут быть определены методы, имеющие одинаковый заголовок, но различный код.

B Полиморфизм метода предполагает, что одна ссылочная переменная в различные моменты времени ссылается на объекты различных классов.

  1. Збереження даних у пам’яті

Регистры. Это самое быстрое хранилище, потому что данные хранятся прямо внутри процессора. Однако Java по своей природе не поддерживает такой способ хранения данных.

Стек. Эта область хранения данных находится в общей оперативной памяти и процессор предоставляет прямой доступ к ней через указатель стека. Некоторые данные Java хранятся в стеке (особенно ссылки на объекты), сами объекты Java не помещаются в стек.

Куча. Здесь размещаются все объекты Java. Преимущество кучи состоит в том, что компилятору не обязательно знать, как долго просуществуют находящиеся там объекты. Работа с кучей дает значительное преимущество в гибкости. Выделение памяти из кучи занимает больше времени, чем в стеке.

Постоянная память. Значения констант часто встраиваются прямо в код программы, так как они неизменны. Во «встроенных» системах данные могут размещаться в постоянной памяти.

Неоперативная память. Данные в Java могут располагаются вне программы и существовать даже тогда, когда она не выполняется, например потоковые объекты (в сети) и долгоживущие объекты, (на диске). Такие объекты могут быть сохранены на другом носителе информации, а потом восстановлены в виде обычного объекта в оперативной памяти.

  1. Поняття і властивості об’єкта, оголошення простого класу у мові JAVA

Объект–это программная сущность, которая создается и «работает» в процессе выполнения объектной программы.

Одним из фундаментальных понятий ООП является понятие программного объекта. состоит из двух частей: (1) набора полей объекта и (2) набора методов объекта. Набор полей будем называть атрибутивной моделью объекта.

Будем делить поля на: (1) базовые и (2) производные. Значения базовых полей не зависят друг от друга, а значения производных полей формируются из значений базовых полей. Производные поля имеют статус полей, предназначенных только для чтения.

Совокупность значений полей объекта называется состоянием объекта. Методы определяют поведение объекта. Метод объекта начинает выполняться после получения запроса от другого объекта.Запрос,инициирующий выполнение метода,называется сообщением.

Основные:

инкапсуляция; память объекта о своих предыдущих состояниях; объектная идентичность; сообщения;статические поля и методы; наследование и полиморфизм.

  1. Модифікатори оголошення класу

Модифікатор доступа – это зарезервированное слово, которое ограничивает доступ к типу или члену типа ( Public,package (по умолчанию) ,abstract, final, strictfp (вычисления с плавающей точкой будут выполняться как в старых версиях Java.)

  1. Поля класу їх модифікатори та конструкція ініціювання

Поле – это переменная или константа, которая характеризует объект. Private,protected ,package (по умолчанию) ,public,static,final,transient(Обычно в таких полях хранится промежуточное состояние объекта), volatile (используются для потоков.)

  JAVA предоставляет 4 способа инициализации : инициализация по умолчанию(Поля получают значения false,‘\u0000’, ноль или null в зависимости от типа ;)

инициализация при объявлении; (Допускаются:константы;выражения;вызовы методов)Не допускаются методы вбрасывающие исключения; блоки инициализации (инициализаторы); конструкторы.

  1. Статичні поля та поля final

Для описания атрибутов и поведения самого класса используются специальные поля и методы, называемые статическими. Характерной особенностью статических методов является то, что они могут использоваться тогда, когда еще не создан ни один объект. Поэтому статические методы могут работать только со статическими полями и реализуют те элементы поведения класса, которые присущи ему как отдельной сущности. Существует несколько способов отображения базовых полей, снабжѐнных ограничением {readOnly}, в Java-код. Чаще всего такие поля рассматриваются как final-поля и снабжаются модификатором final.

  1. Управління доступом до членів класу, модифікатори доступу

Public,Protected, private, default,package(их описание )

public, private, package, protected.

Общий или public префикс видимости (символ «+»). Если член класса помечен public префиксом видимости, то он доступен в контексте всей объектной программы.

Защищѐнный или protected префикс видимости (символ «#»). Если член класса по- мечен protected префиксом видимости, то он доступен в контексте данного класса и всех его подклассов.

Пакетный или package префикс видимости (символ «~»). Если член класса помечен package префиксом видимости, то он доступен в контексте пакета классов, содер- жащего данный класс.

Секретный или private префикс видимости (символ «–»). Если член класса помечен private префиксом видимости, то он доступен только в контексте своего класса. Таким образом, если рассматривать префиксы видимости как характеристики уров- ня доступа к членам класса, то public префикс видимости обеспечивает наивысший уро- вень доступа, а затем, в порядке убывания, следуют protected, package и private.

  1. Створення об’єктів

Новый объект (или экземпляр) создаётся из существующего класса при помощи ключевого слова new. Слева от оператора присваивания = определяется имя переменной. Переменная имеет тип, В правой части выражения происходит выделение памяти для нового экземпляра класса и инициализируется экземпляр. Оператор присваивания присваивает переменной ссылку на только что созданный объект.

  1. Блоки ініціювання та ініціалізація статичних полів

Блок ініціалізації - особлива конструкція в складі класу, призначена для

ініціалізації полів. Вони можуть бути як статичними, в цьому випадку в них можуть задаватися значення статичних полів класу, так і нестатичними, в цьому випадку вони входять до складу кожного створеного об'єкта класу і можуть ініціалізувати поля даного об'єкта. У тілі блока можуть виконуватися операції присвоювання, викликатися різні методи, а також використовуватися різні оператори, у тому числі розгалуження і цикли.

  1. Конструктори їх відміна від методів класу

Конструктор - це спеціальний метод, який визивається інтерпретатором

Java щоразу, коли оператором new створюється черговий представник класу. Він носить ім'я класу і не містить вказівок щодо типу значення, що

повертається. Конструкторів може бути кілька, але відрізнятимуться набором і типом аргументів.

Конструктор : Создает экземпляр класса; Не может быть abstract, final, native, static, или synchronized ; Нет возвращаемого типа, не может быть даже void ; Такое же, как и имя класса – обычно существительное (по договоренности – первая буква заглавная); Конструкторы не наследуются

Метод : Группирует операторы Java ; Может быть abstract, final, native, static, или synchronized ;Любой корректный тип в том числе void ; Любое имя, за исключением имени класса. Имена методов, по договоренности, начинаются со строчной буквы, и обычно являются глаголами; Методы наследуютс

  1. Методи класу, їх оголошення та модифікатори

Метод с модификатором abstract может быть объявлен как метод-член (member method) в пределах абстрактного класса (или интерфейса). В этом случае тело метода отсутствует, а реализация может быть предоставлена в классах-наследниках. Если же метод объявлен как абстрактный в конкретном классе, то получим ошибку компиляции.

Метод, объявленный с модификатором final не может быть переопределен в наследниках.

Метод с модификатором static относится к классу в целом, а не к его экземплярам, то есть в него не передается объект this. Такой метод может быть вызван используя имя класса.

Модификатор native перед объявлением метода указывает, что он явялется специфическим для операционной системы. Как и у абстрактного метода, у него тоже нет тела, а реализация находится в скомпилированном виде в файлах JVM.

<модификатор доступа> <тип возвращаемого значения(void если нет возвращаемого значения)> <имя>(входные параметры){тело метода}

  1. Виклик методів, передача та повернення параметрів

<метод> <имя>=new <метод>(входные параметры);

Возвращение – return <имя поля которое хотим вернуть>

  1. Застосування методів для керування доступом

  1. Вираз this і його застосування

Явная ссылка на текущий объект , Перекрытие имен полей, Обращение к конструктору

  1. Перевантаження методів, метод main та методи native

Наявність у класі декількох конструкторів - методів з однаковим ім'ям, але різним набором аргументів, є прикладом перевантаження методів.

Main: Метод – статический, не возвращающий значение, с одним входным параметром public static void main(String[] args); Ничто не мешает в каждом классе иметь метод main

17. Спадкування, супер та субкласи

Наследование – возможность использования одним из классов полей и методов другого класса.

Супер – родитель.

Суб – ребенок.

Конструкторы не наследуются, методы наследуются.

18. Конструктори субкласів

Кострукторы не наследуются.

19. Порядок ініціювання полів субкласів

При создании объекта субкласса всем его полям присваиваются исходные значения по умолчанию в

зависимости от их типа. Затем происходит вызов конструктора. Каждый конструктор выполняется в три этапа:

1. Вызов конструктора суперкласса.

2. Присвоение значений полям при помощи инициализаторов. (присваивание при объявлении и блоки инициализации)

3. Выполнение тела конструктора.

20. Перевизначення методів класів

  • Целью переопределения методов является изменение его реализации.

  • Для переопределенных методов разрешается изменять модификатор уровня доступа, но только в сторону расширения.

  • Возможно изменение и других модификаторов (метод можно пометить final или abstract).

  • Переопределять можно только открытые методы (private не наследуется поэтому не переопределяется)

21. Приховування полів та доступ до успадкованих членів

Поля не могут переопределяться;  вы можете лишь скрыть их. Если объявить в своем классе поле с тем же именем, что и в суперклассе, то поле суперкласса никуда не исчезнет, однако к нему уже нельзя будет обратиться напрямую, используя одно имя. Для доступа к такому полю нужно будет воспользоваться super или другой ссылкой на тип суперкласса.

22. Службове слово super і його застосування

Ключевое слово super может использоваться во всех нестатических методах класса. При доступе к полям или вызове методов ключевое слово super представляет собой ссылку на текущий объект как экземпляр суперкласса. Использование super оказывается единственным случаем, при котором выбор реализации метода зависит от типа ссылки. В вызове вида super.method всегда используется реализация method из суперкласса, а не его переопределенная  реализация, которая находится где-то ниже в иерархии классов.

23. Сумісність, перетворення та перевірка типів

  • В процессе инициализации полей, при выполнении операции присваивания, при передаче параметров в метод и при возврате значений типы используемых ссылок должны быть совместимы.

  • Совместимость – равенство типов ссылок или перенос ссылки на объект субкласса в ссылку на объект суперкласса. Это – преобразование вверх или безопасное преобразование (выполняется автоматически).

  • Обратный перенос – преобразование вниз (опасное преобразование)

Проверка типа – instanceof

24. Особливості застосування модифікаторів protected та final

  • Использование модификатора final в объявлениях классов и методов повышает уровень безопасности кода. Но, с другой стороны, накладывает жесткие ограничения на возможность развития классов путем их расширения и перегрузки методов.

  • Защищѐнный или protected префикс видимости (символ «#»). Если член класса по- мечен protected префиксом видимости, то он доступен в контексте данного класса и всех его подклассов.

25. Модифікатор методів abstract і абстрактні класи

Класс, содержащий абстрактные методы, называется абстрактным классом. Такие классы помечаются ключевым словом abstract.

1. В чому полягає особливість абстрактних класів?

Абстрактний клас – це базовий клас, від якого не можна створити екземпляру. На практиці абстрактні класи реалізують один з принципів ООП – поліморфізм. В абстрактному класі можна описати (або не визначити) абстрактні методи та властивості.

Абстрактні класи ніколи не повинні породжувати екземпляри, тому важливо правильно визначати їх конструктори. Вкрай важливо забезпечити правильну роботу абстрактного класу і можливість розширення його функціональності.

26. Клас Object і його методи

Object это базовый класс для всех остальных объектов в Java. Каждый класс наследуется от Object. Соответственно все классы наследуют методы класса Object. Методы класса Object: public final native Class getClass() public native int hashCode() public boolean equals(Object obj) protected native Object clone() throws CloneNotSupportedException public String toString() public final native void notify() public final native void notifyAll() public final native void wait(long timeout) throws InterruptedException public final void wait(long timeout, int nanos) throws InterruptedException public final void wait() throws InterruptedException protected void finalize() throws Throwable

27. Клонування об’єктів

  1. Переопределение метода clone() и реализация интерфейса Cloneable();

  2. Использование конструктора копирования;

28. Тип даних, що перелічуються (enum)

  • Тип enum – это тип, поля которого состоят из набора некоторых констант.

29. Наслідування або композиція

Наследование применяется в случае если :

  1. все методы класса Base должны быть методами класса Derived;

  2. имеет смысл предложение "Derived является (is a) Base" (например: Submarin is a Vessel);

Композиция используется тогда, когда:

  1. некоторые методы класса Base не имеют смысла для класса Derived;

  2. имеет смысл предложение "Base обладает (has a) Derived" (например: Employee has a Post).

30. Принципи проектування класу, що підлягає спадкуванню

31. Поняття інтерфейсу, стандартні інтерфейси мови JAVA

Інтерфейс - це повністю абстрактний клас, який не містить нічого крім декларацій методів із зазначенням їх семантики (типу значення, що повертається і кількості, типу і структури набору аргументів), а також набору констант, які за замовчуванням являються статичними і незмінними (static final). Опис інтерфейсу починається з ключового слова interface.

  • public interface Appendable

  • public interface Cloneable

  • public interface Comparable

  • public interface Iterable

  • public interface Readable

  • public interface Runnable

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]