Лекция 2.Основы объектной модели Java 1. Содержание 1.Основы ООП. 2.Понятия «класс» и «объект». 3.Поля и методы класса. Спецификаторы доступа: public,

Презентация:



Advertisements
Похожие презентации
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Advertisements

Кафедра ОСУ, Java 2004 Слайд 1 Наследование Наследование позволяет использовать существующий класс для определения новых классов, т.е. способствует.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1.
Программная инженерия Андрей Дмитриев ©
Лекция 3 Принципы объектно- ориентированного программирования.
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Информационные технологии Стандартные библиотечные функции манипулирование данными преобразование и шифрование определение пользователями функций.
Объектно-ориентированный подход в языке C#. Класс в языке C# - ссылочный тип, определенный пользователем. Для классов ЯП C# допустимо только единичное.
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Методология объектно- ориентированного программирования.
1 Методы Java Методы класса – это подпрограммы, присоединенные к конкретным определениям классов. Они описываются внутри определения класса на том же уровне,
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Транксрипт:

Лекция 2.Основы объектной модели Java 1. Содержание 1.Основы ООП. 2.Понятия «класс» и «объект». 3.Поля и методы класса. Спецификаторы доступа: public, protected, private. Инкапсуляция. 4.Перегрузка методов. 5.Инициализация и завершение: создание и уничтожение объекта, сборка мусора, предотвращение утечек памяти. 6.Статические элементы класса. 7.Виды отношений между объектами: наследование, композиция, агрегация.

Лекция 2.Основы объектной модели Java 2. Цель ООП Суть программирования Программист должен установить связь между моделью машины и моделью задачи. Этой цели и служат языки программирования. Абстракция Все языки программирования построены на абстракции: язык ассемблера – абстракция над лежащей в основе системы команд процессора командные языки – абстракции над ассемблером ООП Объектный подход позволяет программисту использовать средства решения задачи в ее пространстве

Лекция 2.Основы объектной модели Java 3. Свойства ООП Свойства ООП программирования 1.Все является объектом. 2.Программа – это группа объектов, указывающих друг другу что делать, посредством сообщений (например, вызов метода). 3.Каждый объект имеет собственную «память», состоящую из других объектов. 4.У каждого объекта есть тип (объект – это экземпляр класса). 5.Все объекты определенного типа могут получать одинаковые сообщения. ООП программирование Мы обращаемся к элементам пространства задачи и их представлениям в пространстве решения как к «объектам»

Лекция 2.Основы объектной модели Java 4. Класс и объект Объект Объект обладает состоянием, поведением и индивидуальностью Класс Объекты, идентичные во всем, кроме внутреннего состояния во время работы группируются в классы объектов. Класс является типом, который может порождать экземпляры В языке Java класс описывается с помощью ключевого слова class: public class HelloDate {... }

Лекция 2.Основы объектной модели Java 5. Поля и методы Класс имеет поля и методы Состояние объекта определяется полями класса. Поведение объекта определяется методами класса. public class A { public int a; % поле класса public void add() { % метод класса a = a + 1; }

Лекция 2.Основы объектной модели Java 6. Сокрытие реализации Сокрытие реализации Важнейшим принципом ООП является отделение изменяющейся составляющей от постоянной. Например, при изменении версии библиотеки видная внешним программам часть остается неизменной, меняется только внутренняя реализация. Внешняя часть – определяет открытое поведение объекта, тогда как внутренняя реализация скрывается. Мотивы удобство проектирования надежность кода

Лекция 2.Основы объектной модели Java 7. Модификаторы доступа Для решения проблемы сокрытия реализации в Java используются модификаторы доступа. Уровни доступа варьируются от «доступа ко всему» до минимального. В Java существуют следующие модификаторы доступа: public protected private доступ в пределах пакета

Лекция 2.Основы объектной модели Java 8. Модификатор public Модификатор public определяет, что следующее за ним объявление доступно всем, и в том числе произвольным программам клиентам. package ru.sbs.jc; public class Cookie { public void getApple() {... } private void getOrange() {... } } public class Dinner { public void run() { cookie.getApple(); // метод доступен cookie.getOrange();// метод недоступен }

Лекция 2.Основы объектной модели Java 9. Модификатор private Модификатор private обозначает, что никто не имеет право получить доступ к этому члену за исключением его класса, изнутри методов этого класса. package ru.sbs.jc; public class Cookie { private void getOrange() {... } public void makeJuice() { getOrange(); // метод доступен } public class Dinner { public void run() { cookie.getOrange(); // метод недоступен }

Лекция 2.Основы объектной модели Java 10. Модификатор protected Модификатор protected обозначает, что никто не имеет право получить доступ к этому члену за исключением его класса, и классов унаследованных от него. public class Cookie { protected void getOrange() {... } } public class Cake extends Cookie { public void run() { getOrange(); // метод доступен } public class Dinner { public void run() { cookie.getOrange(); // метод недоступен }

Лекция 2.Основы объектной модели Java 11. Модификатор «в пределах пакета» Если вообще не указывать модификатор, то мы получим доступ по умолчанию – в пределах пакета. Поле будет доступно только классам в этом пакете. package ru.sbs.jc; public class Cookie { void getOrange() {... } } package ru.sbs.jc; public class Cake { public void run() { cookie.getOrange(); // метод доступен }

Лекция 2.Основы объектной модели Java 12. Инкапсуляция Инкапсуляция – помещение данных и методов в классы в комбинации с сокрытием реализации. Результатом является тип данных, обладающий характеристиками и поведением.

Лекция 2.Основы объектной модели Java 13. Инкапсуляция, пример public class A { private int id; public A(int id) { setId(id); } public int getId() { return id; } public void setId(int value) { id = value; } public class B { public void run() { A a1 = new A(1); A a2 = new A(2); }

Лекция 2.Основы объектной модели Java 14. Перегрузка методов Перегрузка методов – использование методов с одинаковыми именами, но разными аргументами. Каждый перегруженный метод должен иметь уникальный список аргументов. Мотив – одинаковое поведение для разных типов. public class App { public void print(int i) { … } public void print(String st) { … }

Лекция 2.Основы объектной модели Java 15. Конструкторы В языке Java разработчик класса может в обязательном порядке выполнять инициализацию каждого объекта, используя специальный метод, называемый конструктором. Имя конструктора совпадает с именем класса, у конструктора могут быть аргументы но нет возвращаемого значения. class Rock { int id; public Rock (int value) { id = value; }

Лекция 2.Основы объектной модели Java 16. Конструктор по умолчанию Когда создается класс без конструктора, компилятор автоматически добавляет конструктор по умолчанию. class Bird { int i; } public class App { public static void main(String[] args) { Bird bird = new Bird(); // конструктор по умолчанию }

Лекция 2.Основы объектной модели Java 17. Ключевое слово this Ключевое слово this употребляется только внутри метода и дает ссылку на объект, для которого этот метод был вызван. Идентификатор this подразумевает – этот объект. public class Flower { private int id; Flower(int id) { this.id = id; } Flower() { this(0); }

Лекция 2.Основы объектной модели Java 18. Завершение В языке Java нет необходимости самостоятельно уничтожать объекты (достаточно ссылке присвоить значение null) Как только исчезает последняя ссылка на объект, объект считается завершенным и уничтожается сборщиком мусора. Преимущества: отсутствие утечек памяти и эффективная ее организация. public class App { public void run() { String st; st = new String(1); st = new String(2); // 1 -- удаляется }

Лекция 2.Основы объектной модели Java 19. Утечки памяти Язык Java все-таки несвободен от утечек памяти. Они происходят тогда, когда объект принципиально доступен, но уже не используется. Распространенный случай: объект с очень длинным жизненным циклом содержит ссылку на объект с очень коротким жизненным циклом: Приложение A создает объект B с коротким жизненным циклом. Приложение A создает коллекцию C длинным жизненным циклом и регистрирует в ней B. Приложение A уничтожает объект B и возвращается к первому пункту.

Лекция 2.Основы объектной модели Java 20. Статические элементы класса Статические элементы класса существуют на уровне определения класса, но не на уровне порожденного от него экземпляра и не участвуют в наследовании. Для метода static нет ссылки this. Статическими могут быть как поля, так и методы. Для инициализации статически полей существуют блок static. class Spoon { static int i; static { i = 47; } public static void main(String[] args) { System.out.println(i); }

Лекция 2.Основы объектной модели Java 21. Статические элементы, схема Класс public int method_a(int a) { return a + 1; } public int method_ b (int b) { return b - 1; } public static int method_c() { return 0; } public int method_a( 1 ) { return 1 + 1; } public int method_b(1) { return 1 - 1; } Объект 1 public int method_a(2) { return 2 + 1; } public int method_b(2) { return 2 - 1; } Объект 2 public static int method_c() { return 0; }

Лекция 2.Основы объектной модели Java 22. Шаблон Singleton (Одиночка) Мотивы Не должно быть больше одного экземпляра класса, например нужно иметь только один источник некоторой информации. Код public class Foo { private static Foo instance = null; protected Foo(...) {... } public static final Foo getInstance() { if (instance == null) { instance = new Foo(...) } return instance; }

Лекция 2.Основы объектной модели Java 23. Отношения между объектами Между объектами может существовать несколько типов отношений: 1.Наследование. Дочерний объект получает свойства родительского. 2.Композиция. Один объект включает другой как элемент. 3.Агрегация. Отношения между объектами как один ко многим.

Лекция 2.Основы объектной модели Java 24. Композиция Концепция составление нового класса из уже существующих классов называется композицией. public class Apple {...} public class Orange {...} public class Lemon {...} public class Cocktail { Apple apple; Orange orange; Lemon lemon; public void run() {... }

Лекция 2.Основы объектной модели Java 25. Тест Yandex Вопрос теста на вакансию Java программиста в Yandex: Вопрос 1. Что некорректно в следующем коде: class A { List items () {... } static void main (String args[]) { for ( Iterator i = new A().items().iterator(); i.hasNext(); i++) { i.next(); } 1.Необходимо добавить import java.util.* и убрать i++ 2.Необходимо добавить public в описании main() 3.Необходимо добавить public в описании items() 4.Необходимо выполнить пункты 1 и 2 5.Необходимо выполнить пункты 1, 2 и убрать new 6.Нет правильного ответа

Лекция 2.Основы объектной модели Java 26. Задание на практику Разработать программу, отображающую на экране окно с заголовком, текстовым компонентом и кнопкой. Для каждого элемента должен быть задан фиксированный текст. Заголовок (TitleModel) Текст (TextModel) Кнопка (ButtonModel)

Лекция 2.Основы объектной модели Java 27. Общая архитектура Приложение Визуальные компонентыКомпоненты данных JFrame JTextAreaJButton Заголовок окна ТекстИмя кнопки

Лекция 2.Основы объектной модели Java 28. Класс Application Приложение реализует композицию из визуальных компонентов и компонентов данных public class App { private JFrame appFrame; private TitleModel titleModel; private TextModel textModel; private ButtonModel buttonModel; public static void main(String[] args) { App app = new App(); app.run(); } public void run() {... }

Лекция 2.Основы объектной модели Java 29. Общая схема метода run() Компоненты добавляются в контейнер JFrame: public void run { (1) создание JFrame c заданным заголовком (2) создание JTextArea и JButton c заданным текстом (3) добавление JTextArea и JButton в контейнер JFrame (4) вывод JFrame на экран }

Лекция 2.Основы объектной модели Java 30. Класс JFrame Класс JFrame – это стандартное окно, которое является контейнером для произвольных компонентов. Класс JFrame находится в пакете javax.swing.*; Описание работы с JFrame: /tutorial/uiswing/components/components.html public void run { appFrame = new JFrame(titleModel.getTitle()); appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);... (2), (3) создание и добавление компонентов... appFrame.setSize(300, 200); appFrame.setVisible(true); }

Лекция 2.Основы объектной модели Java 31. Класс ButtonModel public class ButtonModel { private String name; public ButtonModel() { setName( " Button"); } public String getName() { return name; } public void setName(String name) { this.name = name; }

Лекция 2.Основы объектной модели Java 32. Класс TextModel public class TextModel { private String text; public TextModel() {... } public String getText() {... } public void setText(String text) {... }

Лекция 2.Основы объектной модели Java 33. Класс TitleModel public class TitleModel { private String title;... }

Лекция 2.Основы объектной модели Java 34. Компоненты java.swing.JTextArea – текстовый компонент java.swing.JButton - кнопка public void run {... (1)... JComponent c_01; c_01 = new JTextArea(textModel.getText(), 10, 40); c_01.setAlignmentX(Component.CENTER_ALIGNMENT); JComponent c_02; c_02 = new JButton(buttonModel.getName()); c_02.setAlignmentX(Component.CENTER_ALIGNMENT);... (3), (4)... }

Лекция 2.Основы объектной модели Java 35. Контейнер в JFrame Компоненты добавляются в контейнер JFrame: public void run {... (1), (2)... Container container = appFrame.getContentPane(); container.setLayout( new BoxLayout(container, BoxLayout.Y_AXIS)); container.add(c_01); container.add(c_02);... (4)... }