00:40 14-07-2020
День 20 (двадцатый) третьего подхода к разовоществлению.
Лекции по статикам, сеттерам и геттерам. + Философия java уже в постели.
05:14 30-06-2020
День 7 (седьмой) третьего подхода к разовоществлению.
Конспект по Эккелю.

ООП.
Академический подход к ООП основывается на сл. тезисах:
Всё является объектом. О. как усовершенствованная пер-ная; он хранит данные, но к нему можно обращаться с запросами, приказывая объекту выполнять операции над собой. Теоретически любой компонент решаемой задачи можно представить в виде объекта.
Программа - это набор объектов, указывающих друг другу что делать, посредством сообщений. Это можно представить как запрос на вызов метода, принадлежащего определенному объекту.
Каждый об-т имеет собственную память, состоящую из других объектов. Другими словами вы создаете объект с помощью встраивания в него уже существующих об-тов. Таким образом можно сконструировать сколь угодно сложную программу, скрывая общую сложность за простотой отдельных объектов.
У каждого об-та есть тип (класс). Важнейшее отличие классов друг от друга как раз и заключается в ответе на вопрос: какие сообщения можно об-ту посылать?
Все об-ты определенного типа могут получать одинаковые сообщения. Тут все понятно. Это принцип наследственности.

Объект обладает состоянием, поведением и индивидуальностью.
Об-т может иметь в своем распоряжении внутренние данные (состояние об-та), методы (которые определяют поведение), и каждый об-т можно уникальным образом отличить от другого объекта -каждый об-т обладает уникальным адресом в памяти.

Об-т обладает интерфейсом.

Об-ты, идентичные во всем, кроме внутреннего содержания во время работы программы, группируются в "классы об-тов".
Поскольку класс определяет набор об-тов с идентичными хар-ками (элементы данных) и поведением (функциональность), класс на самом деле является типом данных, потому что, например, числа с плавающей точкой тоже имеет ряд характеристик и особенности поведения. Разница состоит в том, что программист определят класс для представления некоторого аспекта задачи, вместо использования уже существующего типа, пред-щего единицу хранения данных в машине.
В системе программирования новые классы обладают точно такими же правами, как и встроенные типы.

Одной из основных трудностей в ООП является установление однозначного соответствия между объектами пространства задачи и объектами пространства решения.
Запросы, которые вы можете посылать об-ту, определяются его интерфейсом, причем инт-с об-та определяется его типом.
Лампочка:
Light It = new Light();
It.on();
Интерфейс определяет с какими запросами можно обращаться к определенному об-ту. Однако где-то должен существовать код, выполняющий запросы. Этот код наряду со скрытыми данными составляет реализацию.
Тип (класс) содержит метод для каждого возможного запроса и при получении определенного запроса, вызывает нужный метод.
В данном случае существует тип с именем Light, конкретный об-т типа Light с именем It и класс поддерживает различные запросы к объекту Light выключить, включить, ярче итд.

Об-т предоставляет услуги.
В тот момент, когда вы пытаетесь разработать или понять структуру программы, часто бывает полезно представить об-ты в качестве "поставщиков услуг". Ваша программа оказывает услуги пользователю и делает она это посредством услуг, предоставляемых другими об-тами. Ваша цель - произвести (а еще лучше отыскать в библиотеках классов тот набор об-тов, который будет оптимальным для решения вашей задачи.

Представление об-та в качестве поставщика услуг обладает дополнительным преимуществом: оно помогает улучшить связуемость (cohesiveness) объекта. Хорошая связуемость - важнейшее качество программного продукта: она означает, что различные аспекты программного компонента (такого, как объект, хотя сказанное может относится также к методу или библиотеке объектов) хорошо стыкуется друг с другом.

Скрытая реализация
Программистов имеет смысл разделить на создателей классов (те, кто создает новые типы данных) и программистов-клиентов (потребители классов, использующих типы данных в своих приложениях).
Public
Private
Protected – действует схоже с private, но производные классы имеют доступ к членам со спецификатором protected, но не имеют доступа к private-членам.
В Java также есть доступ по умолчанию, используемый при отсутствии какого-либо из перечисленных спецификаторов, он также называется доступом в пределах пакета.

JR.

Конструктор исчезает из кода, когда мы создаем свой. Поэтому если нам надо несколько конструкторов для класса, каждый нужно создать самостоятельно.

public class Cat {

String name;
int age;

static int count = 0;

public Cat() {
count++; //счетчик уличных котов
this.name = “Уличный кот номер " + count;
}

public Cat(String name, int age) {
this.name = name;
this.age = age:
}

public static void main(String[] args) {

Cat streetCat1 = new Cat();
Cat streetCat2 = new Cat();
System.out.println(streetCat1.name);
System.out.println(streetCat2.name);
}
}

При передаче аргументов важен порядок, указанный в конструкторе.
Закрыть