1 Java 1. ВВЕДЕНИЕ В КЛАССЫ И ОБЪЕКТЫ. 2 ООП Базовый способ борьбы со сложностью программных продуктов. Методология программирования, основанная на представлении.

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



Advertisements
Похожие презентации
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Advertisements

Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
OOП Инна Исаева. Подпрограмма – это большая программа, разделённая на меньшие части. В программе одна из подпрограмм является главной. Её задача состоит.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
Методология объектно- ориентированного программирования.
Кафедра ОСУ, Java 2004 Слайд 1 Наследование Наследование позволяет использовать существующий класс для определения новых классов, т.е. способствует.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Информационные технологии Стандартные библиотечные функции манипулирование данными преобразование и шифрование определение пользователями функций.
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1.
Транксрипт:

1 Java 1. ВВЕДЕНИЕ В КЛАССЫ И ОБЪЕКТЫ

2 ООП Базовый способ борьбы со сложностью программных продуктов. Методология программирования, основанная на представлении программного продукта в виде совокупности объектов, каждый из которых является экземпляром конкретного класса. Использует в качестве базовых элементов эвристическое взаимодействие объектов.

3 Объект Это реальная именованная сущность, обладающая свойствами и проявляющая свое поведение. В применении к объектно-ориентированным ЯП Объект – обладающий именем набор данных (полей объекта), физически находящихся в памяти компьютера, и методов, имеющих доступ к ним. Имя используется для доступа к полям и методам, составляющим объект. В предельных случаях объект может не содержать полей или методов, а также не иметь имени. Любой объект относится к определенному классу.

4 Класс Класс содержит описание данных и операций над ними. В классе дается обобщенное описание некоторого набора родственных, реально существующих объектов. Объект – конкретный экземпляр класса. Tank - cannon: int - model: String - speed: int + go() : void + init() : void + repair() : void + shoot() : void

5 Принципы ООП абстрагирование данных; инкапсуляция; наследование; полиморфизм; «позднее связывание».

6 Инкапсуляция (encapsulation) Принцип, объединяющий данные и код, манипулирующий этими данными, а также защищающий в первую очередь данные от прямого внешнего доступа и неправильного использования. Другими словами, доступ к данным класса возможен только посредством методов этого же класса.

7 Наследование (inheritance) Объект может наследовать основные свойства другого объекта и добавлять к ним свойства и методы, характерные только для него. Наследование бывает одиночное и множественное Графическое изображение наследования Tank Auto

8 Полиморфизм (polymorphism) Механизм, использующий одно и то же имя метода для решения двух или более похожих, но несколько отличающихся задач. Целью полиморфизма применительно к ООП является использование одного имени для задания общих для класса действий. В более общем смысле концепцией полиморфизма является идея «один интерфейс, множество методов».

9 Механизм «позднего связывания» В процессе выполнения программы определяет принадлежность объекта конкретному классу и производит вызов метода, относящегося к классу, объект которого был использован. Механизм «позднего связывания» позволяет определять версию полиморфного метода во время выполнения программы. Другими словами, иногда невозможно на этапе компиляции определить, какая версия переопределенного метода будет вызвана на том или ином шаге программы.

10 Парадигма наследования и полиморфизма «объект подкласса может использоваться всюду, где используется объект суперкласса».

11 Особенности Java ООП + кроссплатформенность Применение интерфейсов для множественного наследования Системная библиотека содержит классы и пакеты, реализующие и расширяющие базовые возможности языка Все объекты программы расположены в динамической памяти – куче(heap) и доступны по объектным ссылкам, которые, хранятся в стеке (stack). Предложен усовершенствованный механизм работы с коллекциями, реализующими основные динамические структуры данных и списки. Объектные ссылки – это не указатели, а дескрипторы объектов.

12 Особенности Java Отсутствуют способы программного освобождения динамически выделенной памяти. Реализована система автоматического освобождения памяти (сборщик мусора), выделенной с помощью оператора new. Спецификация класса и его реализация всегда содержатся в одном и том же файле. Java не поддерживает структуры и объединения, являющиеся частными случаями классов в C++. Java не поддерживает перегрузку операторов и typedef, беззнаковые целые (если не считать таковым char), а также использование методами аргументов по умолчанию. В Java существуют конструкторы, но отсутствуют деструкторы (автоматическая сборка мусора), Не используется оператор goto и слово const, хотя они являются зарезервированными словами языка.

13 Простейшее применение ООП package lec01.ex01; public class ArgString{ public static void main(String[] arg){ Writer wr = new Writer(); wr.write(arg); } class Writer{ void write(String[] as){ for(String str: as){ System.out.println(str); } javac lec01/ex01/ArgString.java java lec01.ex01.ArgString

14 Классы Спецификаторы доступа к элементам класса Классы в языке Java содержат поля, методы, конструкторы логические блоки. Все функции определяются внутри классов и называются методами Спецификаторы доступа public, private, protected воздействуют только на те объявления полей, методов и классов, перед которыми они стоят, а не на участок от одного до другого спецификатора Элементы по умолчанию не устанавливаются в private, а доступны для классов из данного пакета.

15 Объявление класса [спецификаторы] class ИмяКласса [extends СуперКласс] [implements список_интерфейсов] Спецификатор к классу может быть public - класс доступен в данном пакета и вне пакета, final - класс не может иметь подклассов, аbstract - класс может содержать абстрактные методы, объект такого класса создать нельзя. По умолчанию спецификатор устанавливается в дружественный (friendly). Такой класс доступен только в текущем пакете.

16 Простой пример Java класса: User.java package chapt01; public class User { public int numericCode; private String password; public void setNumericCode(int value) { if(value > 0) numericCode = value; else numericCode = 1; } public int getNumericCode() { return numericCode; } public void setPassword(String pass) { if (pass != null) password = pass; else password = "11111"; } public String getPassword() { return password; }

17 Класс доступа к полям и методам объекта: Runner.java package chapt01; class UserView { public static void welcome(User obj) { System.out.printf("Привет! Введен код: %d, пароль: %s", obj.getNumericCode(), obj.getPassword()); } public class Runner { public static void main(String[] args) { User user = new User(); user.numericCode = 71 // user.password = null; user.setPassword("pass"); UserView.welcome(user); } Привет! Введен код: 71, пароль: pass

18 Сравнение объектов Операции сравнения ссылок на объекты не имеют особого смысла, так как при этом сравниваются адреса. Для сравнения значений объектов необходимо использовать соответствующие методы, например, equals(). Этот метод наследуется в каждый класс из суперкласса Object, который лежит в корне дерева иерархии всех классов и переопределяется в произвольном классе для определения эквивалентности содержимого двух объектов этого класса.

19 Сравнение строк package chapt01; public class ComparingStrings { public static void main(String[] args) { String s1, s2; s1 = "Java"; s2 = s1; System.out.println("сравнение ссылок "+ (s1 == s2)); s1 += '2'; // s1 -= "a"; s2 = new String(s1); System.out.println("сравнение ссылок "+ (s1 == s2)); System.out.println("сравнение значений "+ s1.equals(s2)); } }

20 Чтение символа из потока System.in package chapt01; public class DemoSystemIn { public static void main(String[] args) { int x; try { x = System.in.read(); char c = (char)x; System.out.println("Код символа: " + c + " =" + x); } catch (java.io.IOException e) { e.printStackTrace(); }

21 Чтение строки из консоли import java.io.*;//подключение пакета классов public class ReadStrRunner { public static void main(String[] args) { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader bisr = new BufferedReader(isr); try { System.out.println( "Введите Ваше имя и нажмите :"); String name = bisr.readLine(); System.out.println("Привет, " + name); } catch (IOException e) { System.err.print("ошибка ввода " + e); } Введите Ваше имя и нажмите : Остап Привет, Остап

22 Пакеты Любой класс Java относится к определенному пакету, который может быть неименованным (unnamed или default package), если оператор package отсутствует. Оператор package имя, помещаемый в начале исходного программного файла, определяет именованный пакет, т.е. область в пространстве имен классов, где определяются имена классов, содержащихся в этом файле. Действие оператора package указывает на месторасположение файла относительно корневого каталога проекта. Например: package example06; package by.gsu.pm41.example06;

23 Механизм использования доменных имен В реальных проектах пакеты часто именуются следующим образом: обратный интернет-адрес производителя программного обеспечения by.gsu далее следует имя проекта, например: chapt05; затем располагаются пакеты, определяющие собственно приложение При создании пакета всегда следует руководствоваться простым правилом: называть его именем простым, но отражающим смысл, логику поведения и функциональность объединенных в нем классов.