SlideShare une entreprise Scribd logo
1  sur  26
Рассматриваемые вопросы
 Основы системного подхода
 Понятие предметной области (ПрО). Программа как
  модель ПрО
 Классы в Java:
     описание (декларация) и определение (реализация)
     создание и использование экземпляров класса
   Различие понятий «класс» и «объект»
   Модификаторы доступа класса и его элементов
   Конструкторы класса
   Вызов методов и передача им параметров
   Основные принципы ООП. Их реализация в Java
     инкапсуляция
     наследование
     полиморфизм
Основы системного подхода (СП)
 Системный подход — это метод познания мира, в
 его основе — рассмотрение объектов в качестве
 систем
 Основные допущения СП:
   В мире существуют системы
   Системное описание истинно
   Системы взаимодействуют друг с
    другом, а, следовательно, всѐ в этом мире
    взаимосвязано
   Следовательно мир — это тоже система
Основные понятия СП
 Система — совокупность взаимосвязанных
 элементов, образующих целостность или
 единство
 Структура — способ взаимодействия элементов
 системы посредством определенных связей
 («картина связей»)
 Состояние — положение системы относительно
 других еѐ положений в пространстве состояний
 Процесс — динамическое изменение системы во
 времени (переход из одного состояния в другое).
Предметная область (ПрО)
 ПрО – это множество всех предметов, свойства кот.
    и отношения м-ду кот. рассматриваются.
   Любая программа является моделью
    (образом, представлением) ПрО
   Реальные ПрО достаточно сложны, состояние их
    составляющих элементов описывается с помощью
    большого набора параметров
   Оно не может быть описано с помощью
    единственного примитивного типа данных
   Для решения проблемы сложности были созданы
    классы – элементы более высокого уровня
Примеры ПрО
 ПрО: Банк
 Составные элементы: клиент (вкладчик, кредитор
    и т.п), счёт, транзакция (перевод денег) и т.п.
   ПрО: компьютер
   Элементы: комплектующие компьютера
   ПрО: человек
   Элементы: органы и подсистемы человека
   ПрО: коммерческое предприятие
   Элементы: покупатель, поставщик, товар, группа
    товаров, продажа и т.п.
Классы
 Класс – это также тип данных, но более сложный
  (составной, состоящий из субэлементов)
 Класс – это описание объектов, которые будут
  создаваться на основе этого описания
 Аналогия: класс – это проект (чертёж) типового
  дома, а объект – это конкретный дом, кот.будет
  построен по этому проекту
 Все дома, построенные по типовому проекту, будут
  иметь индивидуальные особенности
  (например, адрес)
Последовательность действий
при работе с классами
1.   Описать класс
2.   Реализовать класс
3.   Создать экземпляр класса – объект
4.   Работать с объектом, обращаясь к его свойствам и
     методам
5.   Уничтожить объект (в Java – автоматически)
Описание класса
 В отличие от С++, в Java описание
  (объявление, declaration) класса совмещено с его
  определением (definition)
 Т.е. методы класса нужно реализовывать (писать код
  тела) сразу же при их описании
 Как правило, в Java класс описывается в отдельном
  файле.
 Синтаксис:
[Модификатор доступа] class ИмяКласса {
//члены класса – свойства и методы
  Модиф._доступа Тип имяСвойства [=значение];
  Модиф._доступа Тип имяМетода(параметры) {
      //тело метода
  }
}
Пример описания класса
// общедоступный класс Автомобиль
public class Car {
        public int maxSpeed; //макс. скорость
        public int currentSpeed; //текущая скорость
        public String vendor; //производитель
        public String model; // модель

       // закрытая константа «шаг приращения скорости»
       private final int speedOnSteep = 5;

       // открытый метод «газонуть»
       public void stepOn() {
               if (currentSpeed + speedOnSteep <= maxSpeed) {
                      currentSpeed += speedOnSteep;
               }
       }

       // вывод информации об объекте
       public void showDescription() {
               System.out.println(“Vendor: “ + vendor +
               “nModel: “ + model + “nCurrentSpeed: ” +
       currentSpeed);
       }
}
Создание объектов
 Тот факт, что в программе описан класс, ещё не
  означает, что мы можем работать с его свойствами
  и вызывать его методы
 Для работы требуется: 1) объявить переменную
  типа Класс и 2) создать объект (экземпляр) класса
 Синтаксис:
ИмяКласса имяОбъекта; //объявление переменной-объекта
имяОбъекта = new ИмяКласса([параметры конструктора]);
 Можно совместить объявление и создание объекта:
ИмяКласса имяОбъекта = new ИмяКласса([параметры
конструктора]);
 Например:
Car kalina;
kalina = new Car();
Car merz = new Car();
Механизм создания объектов
1. Создаться ссылочная переменная в стеке для
   хранения адреса будущего объекта
2. В куче (heap) выделяется пространство для
   размещения объекта со всеми его свойствами
   (атрибутами)
3. Атрибуты инициализируются значениями по
   умолчанию
4. Выполняется явная инициализация атрибутов, если
   она была задана программистом
5. Выполняется конструктор
6. Ссылка на созданный объект (его адрес)
   записывается в соответствующую ссылочную
   переменную
Использование объекта
 Использование объекта осуществляется
  посредством доступа к его элементам
 Для доступа к элементам используется оператор
  «точка» после переменной-ссылки на объект:
имяОбъекта.имяСвойства = значение;
имяОбъекта.имяМетода(параметры);
 Например:
kalina.vendor = “ВАЗ”;
kalina.model = “Калина”;
kalina.maxSpeed = 160;
kalina.showDescription();

merz.vendor = “Mercedes”;
merz.model = “S500”;
merz.maxSpeed = 220;
Атрибуты класса
 Атрибуты (свойства) класса – это переменные внутри
  класса
 Совокупность значений атрибутов объекта описывает
  состояние этого объекта
 Атрибуты класса, в отличие от локальных
  переменных, инициализируются значениями по
  умолчанию
   Числовые элементы – нулями
   Символьные – значением ‘0’ (нулевой символ)
   Логические – значением false
   Ссылки на объекты – значениями null

 Атрибуты класса могут быть инициализированы явным
 образом при их объявлении:
   public int age = 0;
Методы класса
 Метод – это функция, описанная внутри класса
 Совокупность методов определяет поведение
    класса
   Описание метода включает заголовок и тело:
   [модификаторы] тип имя(параметры) { тело; }
   Тело – совокупность операторов
   Например:
   void printHello() { System.out.println(“hello”); }
   Метод может принимать параметры и возвращать
    значение:
   int square(int x) { return x*x; }
Методы класса
 Если метод возвращает значение простого типа
    или ссылку на объект, то его тип должен быть
    указан в заголовке метода
   Также в теле метода должен содержаться хотя бы
    один оператор return
   Если метод не возвращает значение, то в его
    заголовке должен быть указан тип void
   Оператор return немедленно прекращает
    выполнение метода и возвращает управление
    вызывающему методу
   Хороший стиль – использование одного оператора
    return в одном методе
   Но Java не запрещает многократное использование
    return (при наличии соответствующих условий)
Вызов методов с параметрами
   Формальные параметры описаны в заголовке метода
   Фактические параметры указываются при его вызове
   Если в заголовке метода описаны формальные параметры, то
    при его вызове нужно указывать фактические параметры
   Значение, переданные в качестве фактических
    параметров, копируются в переменные-формальные
    параметры
   В качестве фактических параметров могут выступать
    константы, переменные или выражения требуемого типа или
    типа, приводимого к нему неявно
   int k = 12;
   double m;
   . . .
   m = mult( 23.7, k );
public double mult( double p_multiplier1, double p_multiplier2 )
{
   return p_multiplier1 * p_multiplier2;
}
Передача параметров в методы
 В языке Java при вызове методов передача значений
    фактических параметров в формальные параметры
    осуществляется копированием.
   Изменение значения формального параметра не влияет
    на значение фактического параметра.
   В этой связи утверждается, что значение из
    фактических параметров в формальные
    осуществляется по значению.
   При передаче ссылок на объекты осуществляется
    копирование фактического параметра, то есть
    копируется ссылка. После такого копирования, и
    фактический параметр, и формальный
    параметр, ссылаются на один и тот же объект.
   Напоминание: все объекты в Java являются ссылками
Конструктор класса
 Конструктор класса – это специальный метод, название
    которого совпадает с именем класса
   Конструктор вызывается автоматически при создании
    объекта
   Конструктор не может возвращать значение
   Каждый класс обязан иметь конструктор.
   Если в классе никакого конструктора явно не
    написано, то система автоматически создает
    конструктор без параметров, который называется
    конструктором по умолчанию.
   Если в классе явно описан какой-либо конструктор, то
    конструктор по умолчанию системой не создается .
   Конструкторы также, как и другие методы, может иметь
    модификатор доступа
   Один класс может иметь несколько конструкторов с
    разными параметрами (перегрузка (overload)
    конструктора)
Применения конструкторов
 С помощью конструкторов можно управлять
 процессом создания объекта и производить какие-
 то действия, обычно связанные с первичной
 настройкой (инициализацией) объекта:
   присвоение атрибутам значений по умолчанию
   соединение с БД
   соединение с сетью
   создание других объектов
   и др.
Пример конструктора класса
// общедоступный класс Автомобиль
public class Car {
        public int maxSpeed; //макс. скорость
        public int currentSpeed; //текущая скорость
        public String vendor; //производитель
        public String model; // модель

        // закрытая константа «шаг приращения скорости»
        private final int speedOnSteep = 5;

        // конструктор класса
        public Car(int maxSp, String vend, String model) {
                maxSpeed = maxSp;
                vendor = vend;
                this.model = model; //используем ссылку this на текущий   объект
        }

        // другие методы ….
}

// Car c = new Car(); Ошибка! Конструктора по умолчанию без параметров нет
Car kalina = new Car(160, “ВАЗ”, “Калина”);
Уничтожение объекта
 В Java нет деструкторов класса
 Уничтожение неиспользуемых объектов
  осуществляется автоматически «сборщиком
  мусора» (garbage collector), специальным
  механизмом JVM
 Объект удаляется, когда в последующей программе
  на него нет ни одного обращения
Модификаторы доступа (МД)
 Каждый элемент класса должен иметь свой МД
 МД определяет «видимость» этого элемента для
  других классов
 Весь класс также имеет свой МД
Модификаторы доступа
 Следующая таблица, описывает области видимости для разных компонентов
 классов с разными модификаторами доступа.


  Модификатор        Тот же     Тот же       Субкласс        Внешние
  доступа            самый      самый     (класс потомок,    классы из
                      класс     пакет       возможно из       других
                                          другого пакета)     пакетов
  private              Да
  модификатор          Да         Да
  доступа опущен
  – пакетный
  доступ (default)
  protected            Да         Да            Да
  public               Да         Да            Да               Да
Специальная ссылка this
 this – это ссылка на текущий экземпляр объекта
 Может применяться только в методах класса
 С помощью this можно:
    обращаться к атрибутам текущего объекта
    вызывать методы текущего объекта
    передавать ссылку на текущий объект методам
     другого класса
Задание
 По аналогии с созданным классом Rectangle
 создать в отдельных файлах классы Triangle
 (треугольник) и Circle (круг) – описать их свойства
 (атрибуты) и реализовать методы (включая
 рисование).

Contenu connexe

Tendances

Balanced Scorecard IT Strategy and Project Management
Balanced Scorecard IT Strategy and Project ManagementBalanced Scorecard IT Strategy and Project Management
Balanced Scorecard IT Strategy and Project ManagementGlen Alleman
 
Iasa UK Archimate Overview
Iasa UK Archimate OverviewIasa UK Archimate Overview
Iasa UK Archimate OverviewIasa UK
 
Lecture 3: The Role of Enterprise Architecture Practice
Lecture 3: The Role of Enterprise Architecture PracticeLecture 3: The Role of Enterprise Architecture Practice
Lecture 3: The Role of Enterprise Architecture PracticeSvyatoslav Kotusev
 
Verslo procesų valdymas: aktualumas ir tendencijos Lietuvoje ir pasaulyje
Verslo procesų valdymas: aktualumas ir tendencijos Lietuvoje ir pasaulyjeVerslo procesų valdymas: aktualumas ir tendencijos Lietuvoje ir pasaulyje
Verslo procesų valdymas: aktualumas ir tendencijos Lietuvoje ir pasaulyjeDarius Šilingas
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareDanilo Sousa
 
Enterprise Architecture Management - Theorie & Praxis
Enterprise Architecture Management - Theorie & PraxisEnterprise Architecture Management - Theorie & Praxis
Enterprise Architecture Management - Theorie & PraxisJan Thielscher
 
Requirements Engineering Process
Requirements Engineering ProcessRequirements Engineering Process
Requirements Engineering ProcessJomel Penalba
 
Enterprise Business Analysis Capability - Strategic Asset for Business Alignm...
Enterprise Business Analysis Capability - Strategic Asset for Business Alignm...Enterprise Business Analysis Capability - Strategic Asset for Business Alignm...
Enterprise Business Analysis Capability - Strategic Asset for Business Alignm...Alan McSweeney
 
Processos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaProcessos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaRalph Rassweiler
 
BPMN 2.0 overview
BPMN 2.0 overviewBPMN 2.0 overview
BPMN 2.0 overviewsolomd
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geralsergiocrespo
 
Anatomy of a Business Process - How Work Gets Done
Anatomy of a Business Process - How Work Gets DoneAnatomy of a Business Process - How Work Gets Done
Anatomy of a Business Process - How Work Gets DoneDATAVERSITY
 
BUILDING BUSINESS PROCESS MODELS IN ARIS ARCHITECT AND DESIGNER 10
BUILDING BUSINESS PROCESS MODELS IN ARIS ARCHITECT AND DESIGNER 10BUILDING BUSINESS PROCESS MODELS IN ARIS ARCHITECT AND DESIGNER 10
BUILDING BUSINESS PROCESS MODELS IN ARIS ARCHITECT AND DESIGNER 10Kellton Tech Solutions Ltd
 
Togaf 9.1 introduction strategica enterprise
Togaf 9.1 introduction   strategica enterpriseTogaf 9.1 introduction   strategica enterprise
Togaf 9.1 introduction strategica enterprisemdahdour
 
BPMN Introduction
BPMN IntroductionBPMN Introduction
BPMN Introductionejlp12
 
The Practice of Enterprise Architecture - 2nd Edition - Book Review
The Practice of Enterprise Architecture - 2nd Edition - Book ReviewThe Practice of Enterprise Architecture - 2nd Edition - Book Review
The Practice of Enterprise Architecture - 2nd Edition - Book ReviewAshraf Fouad
 

Tendances (20)

Balanced Scorecard IT Strategy and Project Management
Balanced Scorecard IT Strategy and Project ManagementBalanced Scorecard IT Strategy and Project Management
Balanced Scorecard IT Strategy and Project Management
 
Iasa UK Archimate Overview
Iasa UK Archimate OverviewIasa UK Archimate Overview
Iasa UK Archimate Overview
 
Lecture 3: The Role of Enterprise Architecture Practice
Lecture 3: The Role of Enterprise Architecture PracticeLecture 3: The Role of Enterprise Architecture Practice
Lecture 3: The Role of Enterprise Architecture Practice
 
Verslo procesų valdymas: aktualumas ir tendencijos Lietuvoje ir pasaulyje
Verslo procesų valdymas: aktualumas ir tendencijos Lietuvoje ir pasaulyjeVerslo procesų valdymas: aktualumas ir tendencijos Lietuvoje ir pasaulyje
Verslo procesų valdymas: aktualumas ir tendencijos Lietuvoje ir pasaulyje
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de Software
 
Enterprise Architecture Management - Theorie & Praxis
Enterprise Architecture Management - Theorie & PraxisEnterprise Architecture Management - Theorie & Praxis
Enterprise Architecture Management - Theorie & Praxis
 
Requirements Engineering Process
Requirements Engineering ProcessRequirements Engineering Process
Requirements Engineering Process
 
Enterprise Business Analysis Capability - Strategic Asset for Business Alignm...
Enterprise Business Analysis Capability - Strategic Asset for Business Alignm...Enterprise Business Analysis Capability - Strategic Asset for Business Alignm...
Enterprise Business Analysis Capability - Strategic Asset for Business Alignm...
 
Processos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaProcessos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e prática
 
BPMN 2.0 overview
BPMN 2.0 overviewBPMN 2.0 overview
BPMN 2.0 overview
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
Anatomy of a Business Process - How Work Gets Done
Anatomy of a Business Process - How Work Gets DoneAnatomy of a Business Process - How Work Gets Done
Anatomy of a Business Process - How Work Gets Done
 
BUILDING BUSINESS PROCESS MODELS IN ARIS ARCHITECT AND DESIGNER 10
BUILDING BUSINESS PROCESS MODELS IN ARIS ARCHITECT AND DESIGNER 10BUILDING BUSINESS PROCESS MODELS IN ARIS ARCHITECT AND DESIGNER 10
BUILDING BUSINESS PROCESS MODELS IN ARIS ARCHITECT AND DESIGNER 10
 
Togaf 9.1 introduction strategica enterprise
Togaf 9.1 introduction   strategica enterpriseTogaf 9.1 introduction   strategica enterprise
Togaf 9.1 introduction strategica enterprise
 
Tutorial do-software-bizagi
Tutorial do-software-bizagiTutorial do-software-bizagi
Tutorial do-software-bizagi
 
BPMN Introduction
BPMN IntroductionBPMN Introduction
BPMN Introduction
 
The Practice of Enterprise Architecture - 2nd Edition - Book Review
The Practice of Enterprise Architecture - 2nd Edition - Book ReviewThe Practice of Enterprise Architecture - 2nd Edition - Book Review
The Practice of Enterprise Architecture - 2nd Edition - Book Review
 
Análise de Negócio na Perspectiva de BI
Análise de Negócio na Perspectiva de BIAnálise de Negócio na Perspectiva de BI
Análise de Negócio na Perspectiva de BI
 
Bpmn tutorial
Bpmn tutorialBpmn tutorial
Bpmn tutorial
 
Togaf 9 template Preliminary Phase architecture principles
Togaf 9 template  Preliminary Phase architecture principlesTogaf 9 template  Preliminary Phase architecture principles
Togaf 9 template Preliminary Phase architecture principles
 

En vedette

Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
Глава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в JavaГлава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в Javametaform
 
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaКлиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaNikita Lipsky
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Javametaform
 
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 днейГотовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 днейSkillFactory
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Nikita Lipsky
 
Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Javaaragozin
 
Глава1: Обзор технологии Java
Глава1: Обзор технологии JavaГлава1: Обзор технологии Java
Глава1: Обзор технологии Javametaform
 
SECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследования
SECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследованияSECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследования
SECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследованияSECON
 
Универсальная дисконтная карта
Универсальная дисконтная картаУниверсальная дисконтная карта
Универсальная дисконтная картаEgor Lanko
 
SECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON
 
Об опыте применения jsonb в реальных проектах. Выступление на PgConf.Russia 2016
Об опыте применения jsonb в реальных проектах. Выступление на PgConf.Russia 2016Об опыте применения jsonb в реальных проектах. Выступление на PgConf.Russia 2016
Об опыте применения jsonb в реальных проектах. Выступление на PgConf.Russia 2016etyumentcev
 
Коллекции в Java
Коллекции в JavaКоллекции в Java
Коллекции в Javametaform
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...metaform
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо... PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...it-people
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroAnton Moiseenko
 

En vedette (20)

Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
Глава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в JavaГлава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в Java
 
math
mathmath
math
 
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaКлиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на Java
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
 
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 днейГотовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
 
Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Java
 
Глава1: Обзор технологии Java
Глава1: Обзор технологии JavaГлава1: Обзор технологии Java
Глава1: Обзор технологии Java
 
Plpgsql russia-pgconf
Plpgsql russia-pgconfPlpgsql russia-pgconf
Plpgsql russia-pgconf
 
SECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследования
SECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследованияSECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследования
SECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследования
 
Универсальная дисконтная карта
Универсальная дисконтная картаУниверсальная дисконтная карта
Универсальная дисконтная карта
 
SECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON'2016. Бартунов Олег, Карьера в Open Source
SECON'2016. Бартунов Олег, Карьера в Open Source
 
Об опыте применения jsonb в реальных проектах. Выступление на PgConf.Russia 2016
Об опыте применения jsonb в реальных проектах. Выступление на PgConf.Russia 2016Об опыте применения jsonb в реальных проектах. Выступление на PgConf.Russia 2016
Об опыте применения jsonb в реальных проектах. Выступление на PgConf.Russia 2016
 
Лекц-3
Лекц-3Лекц-3
Лекц-3
 
Коллекции в Java
Коллекции в JavaКоллекции в Java
Коллекции в Java
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо... PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. Intro
 

Similaire à Классы и объекты в Java

Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Anton Moiseenko
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.Igor Shkulipa
 
Lec 2 Java
Lec 2 JavaLec 2 Java
Lec 2 Javaitc73
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Sergey Nemchinsky
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.Igor Shkulipa
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4Technopark
 
презентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работампрезентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работамstudent_kai
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеmetaform
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansmetaform
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.Igor Shkulipa
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.Igor Shkulipa
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программированияguestfc8ae0
 
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6Technopark
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5Technopark
 
C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5Technopark
 

Similaire à Классы и объекты в Java (20)

Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
 
лек11 5
лек11 5лек11 5
лек11 5
 
лек11 5
лек11 5лек11 5
лек11 5
 
Классы и объекты С#
Классы и объекты С#Классы и объекты С#
Классы и объекты С#
 
Lec 2 Java
Lec 2 JavaLec 2 Java
Lec 2 Java
 
Lec 2
Lec 2Lec 2
Lec 2
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4
 
лек13 3
лек13 3лек13 3
лек13 3
 
презентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работампрезентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работам
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программирования
 
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5
 

Plus de metaform

Приступаем к разработке Android приложений
Приступаем к разработке Android приложенийПриступаем к разработке Android приложений
Приступаем к разработке Android приложенийmetaform
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода выводаmetaform
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Javametaform
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтовmetaform
 
Составление резюме
Составление резюмеСоставление резюме
Составление резюмеmetaform
 
Базовые операторы Java
Базовые операторы JavaБазовые операторы Java
Базовые операторы Javametaform
 
Мастерство речи, искусство презентации
Мастерство речи, искусство презентацииМастерство речи, искусство презентации
Мастерство речи, искусство презентацииmetaform
 

Plus de metaform (7)

Приступаем к разработке Android приложений
Приступаем к разработке Android приложенийПриступаем к разработке Android приложений
Приступаем к разработке Android приложений
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Java
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтов
 
Составление резюме
Составление резюмеСоставление резюме
Составление резюме
 
Базовые операторы Java
Базовые операторы JavaБазовые операторы Java
Базовые операторы Java
 
Мастерство речи, искусство презентации
Мастерство речи, искусство презентацииМастерство речи, искусство презентации
Мастерство речи, искусство презентации
 

Классы и объекты в Java

  • 1.
  • 2. Рассматриваемые вопросы  Основы системного подхода  Понятие предметной области (ПрО). Программа как модель ПрО  Классы в Java:  описание (декларация) и определение (реализация)  создание и использование экземпляров класса  Различие понятий «класс» и «объект»  Модификаторы доступа класса и его элементов  Конструкторы класса  Вызов методов и передача им параметров  Основные принципы ООП. Их реализация в Java  инкапсуляция  наследование  полиморфизм
  • 3. Основы системного подхода (СП)  Системный подход — это метод познания мира, в его основе — рассмотрение объектов в качестве систем  Основные допущения СП:  В мире существуют системы  Системное описание истинно  Системы взаимодействуют друг с другом, а, следовательно, всѐ в этом мире взаимосвязано  Следовательно мир — это тоже система
  • 4. Основные понятия СП  Система — совокупность взаимосвязанных элементов, образующих целостность или единство  Структура — способ взаимодействия элементов системы посредством определенных связей («картина связей»)  Состояние — положение системы относительно других еѐ положений в пространстве состояний  Процесс — динамическое изменение системы во времени (переход из одного состояния в другое).
  • 5. Предметная область (ПрО)  ПрО – это множество всех предметов, свойства кот. и отношения м-ду кот. рассматриваются.  Любая программа является моделью (образом, представлением) ПрО  Реальные ПрО достаточно сложны, состояние их составляющих элементов описывается с помощью большого набора параметров  Оно не может быть описано с помощью единственного примитивного типа данных  Для решения проблемы сложности были созданы классы – элементы более высокого уровня
  • 6. Примеры ПрО  ПрО: Банк  Составные элементы: клиент (вкладчик, кредитор и т.п), счёт, транзакция (перевод денег) и т.п.  ПрО: компьютер  Элементы: комплектующие компьютера  ПрО: человек  Элементы: органы и подсистемы человека  ПрО: коммерческое предприятие  Элементы: покупатель, поставщик, товар, группа товаров, продажа и т.п.
  • 7. Классы  Класс – это также тип данных, но более сложный (составной, состоящий из субэлементов)  Класс – это описание объектов, которые будут создаваться на основе этого описания  Аналогия: класс – это проект (чертёж) типового дома, а объект – это конкретный дом, кот.будет построен по этому проекту  Все дома, построенные по типовому проекту, будут иметь индивидуальные особенности (например, адрес)
  • 8. Последовательность действий при работе с классами 1. Описать класс 2. Реализовать класс 3. Создать экземпляр класса – объект 4. Работать с объектом, обращаясь к его свойствам и методам 5. Уничтожить объект (в Java – автоматически)
  • 9. Описание класса  В отличие от С++, в Java описание (объявление, declaration) класса совмещено с его определением (definition)  Т.е. методы класса нужно реализовывать (писать код тела) сразу же при их описании  Как правило, в Java класс описывается в отдельном файле.  Синтаксис: [Модификатор доступа] class ИмяКласса { //члены класса – свойства и методы Модиф._доступа Тип имяСвойства [=значение]; Модиф._доступа Тип имяМетода(параметры) { //тело метода } }
  • 10. Пример описания класса // общедоступный класс Автомобиль public class Car { public int maxSpeed; //макс. скорость public int currentSpeed; //текущая скорость public String vendor; //производитель public String model; // модель // закрытая константа «шаг приращения скорости» private final int speedOnSteep = 5; // открытый метод «газонуть» public void stepOn() { if (currentSpeed + speedOnSteep <= maxSpeed) { currentSpeed += speedOnSteep; } } // вывод информации об объекте public void showDescription() { System.out.println(“Vendor: “ + vendor + “nModel: “ + model + “nCurrentSpeed: ” + currentSpeed); } }
  • 11. Создание объектов  Тот факт, что в программе описан класс, ещё не означает, что мы можем работать с его свойствами и вызывать его методы  Для работы требуется: 1) объявить переменную типа Класс и 2) создать объект (экземпляр) класса  Синтаксис: ИмяКласса имяОбъекта; //объявление переменной-объекта имяОбъекта = new ИмяКласса([параметры конструктора]);  Можно совместить объявление и создание объекта: ИмяКласса имяОбъекта = new ИмяКласса([параметры конструктора]);  Например: Car kalina; kalina = new Car(); Car merz = new Car();
  • 12. Механизм создания объектов 1. Создаться ссылочная переменная в стеке для хранения адреса будущего объекта 2. В куче (heap) выделяется пространство для размещения объекта со всеми его свойствами (атрибутами) 3. Атрибуты инициализируются значениями по умолчанию 4. Выполняется явная инициализация атрибутов, если она была задана программистом 5. Выполняется конструктор 6. Ссылка на созданный объект (его адрес) записывается в соответствующую ссылочную переменную
  • 13. Использование объекта  Использование объекта осуществляется посредством доступа к его элементам  Для доступа к элементам используется оператор «точка» после переменной-ссылки на объект: имяОбъекта.имяСвойства = значение; имяОбъекта.имяМетода(параметры);  Например: kalina.vendor = “ВАЗ”; kalina.model = “Калина”; kalina.maxSpeed = 160; kalina.showDescription(); merz.vendor = “Mercedes”; merz.model = “S500”; merz.maxSpeed = 220;
  • 14. Атрибуты класса  Атрибуты (свойства) класса – это переменные внутри класса  Совокупность значений атрибутов объекта описывает состояние этого объекта  Атрибуты класса, в отличие от локальных переменных, инициализируются значениями по умолчанию  Числовые элементы – нулями  Символьные – значением ‘0’ (нулевой символ)  Логические – значением false  Ссылки на объекты – значениями null  Атрибуты класса могут быть инициализированы явным образом при их объявлении:  public int age = 0;
  • 15. Методы класса  Метод – это функция, описанная внутри класса  Совокупность методов определяет поведение класса  Описание метода включает заголовок и тело:  [модификаторы] тип имя(параметры) { тело; }  Тело – совокупность операторов  Например:  void printHello() { System.out.println(“hello”); }  Метод может принимать параметры и возвращать значение:  int square(int x) { return x*x; }
  • 16. Методы класса  Если метод возвращает значение простого типа или ссылку на объект, то его тип должен быть указан в заголовке метода  Также в теле метода должен содержаться хотя бы один оператор return  Если метод не возвращает значение, то в его заголовке должен быть указан тип void  Оператор return немедленно прекращает выполнение метода и возвращает управление вызывающему методу  Хороший стиль – использование одного оператора return в одном методе  Но Java не запрещает многократное использование return (при наличии соответствующих условий)
  • 17. Вызов методов с параметрами  Формальные параметры описаны в заголовке метода  Фактические параметры указываются при его вызове  Если в заголовке метода описаны формальные параметры, то при его вызове нужно указывать фактические параметры  Значение, переданные в качестве фактических параметров, копируются в переменные-формальные параметры  В качестве фактических параметров могут выступать константы, переменные или выражения требуемого типа или типа, приводимого к нему неявно int k = 12; double m; . . . m = mult( 23.7, k ); public double mult( double p_multiplier1, double p_multiplier2 ) { return p_multiplier1 * p_multiplier2; }
  • 18. Передача параметров в методы  В языке Java при вызове методов передача значений фактических параметров в формальные параметры осуществляется копированием.  Изменение значения формального параметра не влияет на значение фактического параметра.  В этой связи утверждается, что значение из фактических параметров в формальные осуществляется по значению.  При передаче ссылок на объекты осуществляется копирование фактического параметра, то есть копируется ссылка. После такого копирования, и фактический параметр, и формальный параметр, ссылаются на один и тот же объект.  Напоминание: все объекты в Java являются ссылками
  • 19. Конструктор класса  Конструктор класса – это специальный метод, название которого совпадает с именем класса  Конструктор вызывается автоматически при создании объекта  Конструктор не может возвращать значение  Каждый класс обязан иметь конструктор.  Если в классе никакого конструктора явно не написано, то система автоматически создает конструктор без параметров, который называется конструктором по умолчанию.  Если в классе явно описан какой-либо конструктор, то конструктор по умолчанию системой не создается .  Конструкторы также, как и другие методы, может иметь модификатор доступа  Один класс может иметь несколько конструкторов с разными параметрами (перегрузка (overload) конструктора)
  • 20. Применения конструкторов  С помощью конструкторов можно управлять процессом создания объекта и производить какие- то действия, обычно связанные с первичной настройкой (инициализацией) объекта:  присвоение атрибутам значений по умолчанию  соединение с БД  соединение с сетью  создание других объектов  и др.
  • 21. Пример конструктора класса // общедоступный класс Автомобиль public class Car { public int maxSpeed; //макс. скорость public int currentSpeed; //текущая скорость public String vendor; //производитель public String model; // модель // закрытая константа «шаг приращения скорости» private final int speedOnSteep = 5; // конструктор класса public Car(int maxSp, String vend, String model) { maxSpeed = maxSp; vendor = vend; this.model = model; //используем ссылку this на текущий объект } // другие методы …. } // Car c = new Car(); Ошибка! Конструктора по умолчанию без параметров нет Car kalina = new Car(160, “ВАЗ”, “Калина”);
  • 22. Уничтожение объекта  В Java нет деструкторов класса  Уничтожение неиспользуемых объектов осуществляется автоматически «сборщиком мусора» (garbage collector), специальным механизмом JVM  Объект удаляется, когда в последующей программе на него нет ни одного обращения
  • 23. Модификаторы доступа (МД)  Каждый элемент класса должен иметь свой МД  МД определяет «видимость» этого элемента для других классов  Весь класс также имеет свой МД
  • 24. Модификаторы доступа Следующая таблица, описывает области видимости для разных компонентов классов с разными модификаторами доступа. Модификатор Тот же Тот же Субкласс Внешние доступа самый самый (класс потомок, классы из класс пакет возможно из других другого пакета) пакетов private Да модификатор Да Да доступа опущен – пакетный доступ (default) protected Да Да Да public Да Да Да Да
  • 25. Специальная ссылка this  this – это ссылка на текущий экземпляр объекта  Может применяться только в методах класса  С помощью this можно:  обращаться к атрибутам текущего объекта  вызывать методы текущего объекта  передавать ссылку на текущий объект методам другого класса
  • 26. Задание  По аналогии с созданным классом Rectangle создать в отдельных файлах классы Triangle (треугольник) и Circle (круг) – описать их свойства (атрибуты) и реализовать методы (включая рисование).