SlideShare una empresa de Scribd logo
1 de 18
Классы и Объекты в Java
Основы ООП
• Java Programming Language
– переменные примитивных типов
int , char, double
– переменные объектных типов (ссылки!)
Integer, System, MyClass
– нет адресов, Сборщик Мусора
– JavaDoc
• Java Platform
– Java Virtual Machine
– Java SE, Java EE
– JRE, JDK
Объекты – ключевое понятие
объектно-ориентированных технологий
оглядитесь: мы живём в мире взаимодействующих объектов!
Каждый объект характеризуется состоянием и
поведением
Программные объекты
• Объекты в программных системах – аналоги объектов в
реальном мире
• Состояние хранится в полях
• Поведение доступно через методы
• Методы изменяют состояние объекта
Сокрытие внутреннего состояния объекта от посторонних глаз
называется инкапсуляцией. Единственный способ изменить
это состояние – вызвать метод объекта.
Программные объекты
Состояние:
• Скорость движения
• Скорость вращения колёс
• Конфигурация шестерней
Поведение:
• Переключить передачи
• Затормозить
• Изменить темп
Программные объекты
Основные преимущества:
• Модульность
• Повторное использование кода
• Сокрытие внутреннего представления
• Расширяемость и простота отладки
Класс – множество объектов, имеющих
схожее поведение и свойства
Класс – велосипед, объекты – мой вел, вел Хемуля, …
Классы и объекты в Java
(пример: Bike.java)
Классы и объекты в Java
• Каждому public классу – свой файл
• Поля и методы могут чередоваться
• Реализация метода не отделяется от объявления метода
Классы и объекты в Java
Квалификаторы доступа в Java:
• public – доступ имеют все
• private – доступ имеют только объекты данного класса
• protected – доступ имеют объекты данного класса, все
объекты классов-потомков и все классы из данного пакета
По умолчанию – package protected, то есть все классы из данного
пакета имеют доступ
Классы и объекты в Java
• Модификатор доступа помещается перед каждым членом
класса (не перед группой)
• Все поля класса стоит помечать как private или protected
• Хотя бы некоторые методы стоит помечать как public
Вообще, рекомендуется скрывать данные, и предоставлять
методы для изменения состояния (как и в реальном мире)
Static Members
• Члены объекта (Instance Members)
– Принадлежат экземпляру класса (поля и методы в обычном
понимании)
• Члены класса (Class Members)
– Принадлежат классу (могут быть использованы и без экземпляра
класса)
– Внутри статических методов нельзя обращаться к нестатическим
членам
Как именовать классы, поля, методы?
Венгерская Нотация
• Использовалась в BCPL
• Префикс указывает на тип данных
• Была действительно нужна, поскольку в языке был только один
тип данных
• Сегодня осталось только как рудимент в WinAPI (всякие
szClassName).
• В языках программирования с динамической типизацией
(Python, JavaScript, PHP) практически не используется
Правила именования
• Классы: CamelCase
• Поля класса, методы: camelCase
• Константы: ALL_CAPITALS_WITH_UNDERSCORES
• Локальные переменные: camelCase
Код должен соответствовать Code Conventions for the Java
Programming Language
Организация пространств имён
• Аналог пространства имён в Java – пакет (package)
• Пакеты имеют иерархическую структуру
• Обычно именуются маленькими буквами
• Одному пакету соответствует одна директория в файловой
системе
Организация пространств имён
(пример)
Упаковка приложений
• Форма распространения java-приложений – JAR-архив
• Идеологически – набор кода и данных, которые нужны
приложению для работы
• Технически – zip-архив с байт-кодом, ресурсами и метаданными
(манифестом)
Запуск приложения:
$ java -jar my-app.jar

Más contenido relacionado

La actualidad más candente

разработка бизнес приложений (6)
разработка бизнес приложений (6)разработка бизнес приложений (6)
разработка бизнес приложений (6)Alexander Gornik
 
Msu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And UmlMsu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And Umlolegol
 
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью. Unguryan Vitaliy
 
Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.Anton Moiseenko
 
03_JavaBasicConstructionsAndDatatypes
03_JavaBasicConstructionsAndDatatypes03_JavaBasicConstructionsAndDatatypes
03_JavaBasicConstructionsAndDatatypesdklenov
 
20100228 virtualization igotti_lecture03
20100228 virtualization igotti_lecture0320100228 virtualization igotti_lecture03
20100228 virtualization igotti_lecture03Computer Science Club
 

La actualidad más candente (7)

разработка бизнес приложений (6)
разработка бизнес приложений (6)разработка бизнес приложений (6)
разработка бизнес приложений (6)
 
Msu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And UmlMsu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And Uml
 
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью.
 
Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.Java Core. Lecture# 3. Part# 3. Multithreading.
Java Core. Lecture# 3. Part# 3. Multithreading.
 
Классы и объекты С#
Классы и объекты С#Классы и объекты С#
Классы и объекты С#
 
03_JavaBasicConstructionsAndDatatypes
03_JavaBasicConstructionsAndDatatypes03_JavaBasicConstructionsAndDatatypes
03_JavaBasicConstructionsAndDatatypes
 
20100228 virtualization igotti_lecture03
20100228 virtualization igotti_lecture0320100228 virtualization igotti_lecture03
20100228 virtualization igotti_lecture03
 

Similar a Java. Lecture 02. Classes and Objects

02 - Классы и Объекты
02 - Классы и Объекты02 - Классы и Объекты
02 - Классы и Объектыphearnot
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.Igor Shkulipa
 
Контент ориентированное программирование
Контент ориентированное программированиеКонтент ориентированное программирование
Контент ориентированное программированиеksmster
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеmetaform
 
Java. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UMLJava. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UMLcolriot
 
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...CodeFest
 
Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Nikita Lipsky
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)Alexander Gornik
 
2. объекты
2. объекты2. объекты
2. объектыOdant
 
CV2011 Lecture 8. Detection
CV2011 Lecture 8. DetectionCV2011 Lecture 8. Detection
CV2011 Lecture 8. DetectionAnton Konushin
 
14 - Базы данных. Основные объекты базы данных и язык SQL
14 - Базы данных. Основные объекты базы данных и язык SQL14 - Базы данных. Основные объекты базы данных и язык SQL
14 - Базы данных. Основные объекты базы данных и язык SQLRoman Brovko
 
JVM: краткий курс общей анатомии
JVM: краткий курс общей анатомииJVM: краткий курс общей анатомии
JVM: краткий курс общей анатомииNikita Lipsky
 
Msu.Center.Lectures.J01 Introducing Java
Msu.Center.Lectures.J01 Introducing JavaMsu.Center.Lectures.J01 Introducing Java
Msu.Center.Lectures.J01 Introducing Javaolegol
 
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine "Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine Vladimir Ivanov
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Computer Science Club
 
Память в Java. Garbage Collector
Память в Java. Garbage CollectorПамять в Java. Garbage Collector
Память в Java. Garbage CollectorOlexandra Dmytrenko
 
Java. Lecture 06. I/O
Java. Lecture 06. I/OJava. Lecture 06. I/O
Java. Lecture 06. I/Ocolriot
 

Similar a Java. Lecture 02. Classes and Objects (20)

02 - Классы и Объекты
02 - Классы и Объекты02 - Классы и Объекты
02 - Классы и Объекты
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
An internal look at HotSpot JVM
An internal look at HotSpot JVMAn internal look at HotSpot JVM
An internal look at HotSpot JVM
 
Контент ориентированное программирование
Контент ориентированное программированиеКонтент ориентированное программирование
Контент ориентированное программирование
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
 
Java. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UMLJava. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UML
 
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
 
Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Java худеет. Спроси меня как.
Java худеет. Спроси меня как.
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)
 
2. объекты
2. объекты2. объекты
2. объекты
 
CV2011 Lecture 8. Detection
CV2011 Lecture 8. DetectionCV2011 Lecture 8. Detection
CV2011 Lecture 8. Detection
 
Netpeak Talks #3: Масштабируемое приложение на PHP
Netpeak Talks #3: Масштабируемое приложение на PHPNetpeak Talks #3: Масштабируемое приложение на PHP
Netpeak Talks #3: Масштабируемое приложение на PHP
 
14 - Базы данных. Основные объекты базы данных и язык SQL
14 - Базы данных. Основные объекты базы данных и язык SQL14 - Базы данных. Основные объекты базы данных и язык SQL
14 - Базы данных. Основные объекты базы данных и язык SQL
 
JVM: краткий курс общей анатомии
JVM: краткий курс общей анатомииJVM: краткий курс общей анатомии
JVM: краткий курс общей анатомии
 
Msu.Center.Lectures.J01 Introducing Java
Msu.Center.Lectures.J01 Introducing JavaMsu.Center.Lectures.J01 Introducing Java
Msu.Center.Lectures.J01 Introducing Java
 
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine "Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
 
Память в Java. Garbage Collector
Память в Java. Garbage CollectorПамять в Java. Garbage Collector
Память в Java. Garbage Collector
 
Design principles
Design principles Design principles
Design principles
 
Java. Lecture 06. I/O
Java. Lecture 06. I/OJava. Lecture 06. I/O
Java. Lecture 06. I/O
 

Más de colriot

Java. Lecture 12. Development Tools
Java. Lecture 12. Development ToolsJava. Lecture 12. Development Tools
Java. Lecture 12. Development Toolscolriot
 
Java. Lecture 10. Working with DBMS
Java. Lecture 10. Working with DBMSJava. Lecture 10. Working with DBMS
Java. Lecture 10. Working with DBMScolriot
 
Java. Lecture 09. Network Programming
Java. Lecture 09. Network ProgrammingJava. Lecture 09. Network Programming
Java. Lecture 09. Network Programmingcolriot
 
Java. Lecture 08. Multithreaded Programming
Java. Lecture 08. Multithreaded ProgrammingJava. Lecture 08. Multithreaded Programming
Java. Lecture 08. Multithreaded Programmingcolriot
 
Java. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLJava. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLcolriot
 
Java. Lecture 06.1. XML Basics
Java. Lecture 06.1. XML BasicsJava. Lecture 06.1. XML Basics
Java. Lecture 06.1. XML Basicscolriot
 
Java. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and DebuggingJava. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and Debuggingcolriot
 
Java. Lecture 04. Standart Library
Java. Lecture 04. Standart LibraryJava. Lecture 04. Standart Library
Java. Lecture 04. Standart Librarycolriot
 

Más de colriot (8)

Java. Lecture 12. Development Tools
Java. Lecture 12. Development ToolsJava. Lecture 12. Development Tools
Java. Lecture 12. Development Tools
 
Java. Lecture 10. Working with DBMS
Java. Lecture 10. Working with DBMSJava. Lecture 10. Working with DBMS
Java. Lecture 10. Working with DBMS
 
Java. Lecture 09. Network Programming
Java. Lecture 09. Network ProgrammingJava. Lecture 09. Network Programming
Java. Lecture 09. Network Programming
 
Java. Lecture 08. Multithreaded Programming
Java. Lecture 08. Multithreaded ProgrammingJava. Lecture 08. Multithreaded Programming
Java. Lecture 08. Multithreaded Programming
 
Java. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLJava. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XML
 
Java. Lecture 06.1. XML Basics
Java. Lecture 06.1. XML BasicsJava. Lecture 06.1. XML Basics
Java. Lecture 06.1. XML Basics
 
Java. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and DebuggingJava. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and Debugging
 
Java. Lecture 04. Standart Library
Java. Lecture 04. Standart LibraryJava. Lecture 04. Standart Library
Java. Lecture 04. Standart Library
 

Java. Lecture 02. Classes and Objects

  • 1. Классы и Объекты в Java Основы ООП
  • 2. • Java Programming Language – переменные примитивных типов int , char, double – переменные объектных типов (ссылки!) Integer, System, MyClass – нет адресов, Сборщик Мусора – JavaDoc • Java Platform – Java Virtual Machine – Java SE, Java EE – JRE, JDK
  • 3. Объекты – ключевое понятие объектно-ориентированных технологий оглядитесь: мы живём в мире взаимодействующих объектов! Каждый объект характеризуется состоянием и поведением
  • 4. Программные объекты • Объекты в программных системах – аналоги объектов в реальном мире • Состояние хранится в полях • Поведение доступно через методы • Методы изменяют состояние объекта Сокрытие внутреннего состояния объекта от посторонних глаз называется инкапсуляцией. Единственный способ изменить это состояние – вызвать метод объекта.
  • 5. Программные объекты Состояние: • Скорость движения • Скорость вращения колёс • Конфигурация шестерней Поведение: • Переключить передачи • Затормозить • Изменить темп
  • 6. Программные объекты Основные преимущества: • Модульность • Повторное использование кода • Сокрытие внутреннего представления • Расширяемость и простота отладки
  • 7. Класс – множество объектов, имеющих схожее поведение и свойства Класс – велосипед, объекты – мой вел, вел Хемуля, …
  • 8. Классы и объекты в Java (пример: Bike.java)
  • 9. Классы и объекты в Java • Каждому public классу – свой файл • Поля и методы могут чередоваться • Реализация метода не отделяется от объявления метода
  • 10. Классы и объекты в Java Квалификаторы доступа в Java: • public – доступ имеют все • private – доступ имеют только объекты данного класса • protected – доступ имеют объекты данного класса, все объекты классов-потомков и все классы из данного пакета По умолчанию – package protected, то есть все классы из данного пакета имеют доступ
  • 11. Классы и объекты в Java • Модификатор доступа помещается перед каждым членом класса (не перед группой) • Все поля класса стоит помечать как private или protected • Хотя бы некоторые методы стоит помечать как public Вообще, рекомендуется скрывать данные, и предоставлять методы для изменения состояния (как и в реальном мире)
  • 12. Static Members • Члены объекта (Instance Members) – Принадлежат экземпляру класса (поля и методы в обычном понимании) • Члены класса (Class Members) – Принадлежат классу (могут быть использованы и без экземпляра класса) – Внутри статических методов нельзя обращаться к нестатическим членам
  • 13. Как именовать классы, поля, методы?
  • 14. Венгерская Нотация • Использовалась в BCPL • Префикс указывает на тип данных • Была действительно нужна, поскольку в языке был только один тип данных • Сегодня осталось только как рудимент в WinAPI (всякие szClassName). • В языках программирования с динамической типизацией (Python, JavaScript, PHP) практически не используется
  • 15. Правила именования • Классы: CamelCase • Поля класса, методы: camelCase • Константы: ALL_CAPITALS_WITH_UNDERSCORES • Локальные переменные: camelCase Код должен соответствовать Code Conventions for the Java Programming Language
  • 16. Организация пространств имён • Аналог пространства имён в Java – пакет (package) • Пакеты имеют иерархическую структуру • Обычно именуются маленькими буквами • Одному пакету соответствует одна директория в файловой системе
  • 18. Упаковка приложений • Форма распространения java-приложений – JAR-архив • Идеологически – набор кода и данных, которые нужны приложению для работы • Технически – zip-архив с байт-кодом, ресурсами и метаданными (манифестом) Запуск приложения: $ java -jar my-app.jar