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

advertisement
Классы и Объекты в Java
Основы ООП
Немного синтаксиса
• Java является строго типизированным
языком.
• Java имеет СИ-подобный синтаксис.
• Все типы данных разделяются на две
группы
• Простые или примитивные(8 штук)
• Объектные или ссылочные
Немного синтаксиса
Простые:
• целочисленные
– byte
– short
– int
– long
– char
• дробные
– float
– double
• булевые
– Boolean
Ссылочные:
– Переменная ссылочного типа имеет значение
либо null, либо ссылку, указывающую на
некоторый объект в виртуальной памяти JVM.
Немного синтаксиса
С++
Java
void swap(int *a, int *b){
int *temp = a;
a = b;
public static void swap(
b = temp;
AtomicInteger a, AtomicInteger
}
b)
?
{
a.set(b.getAndSet(a.get()));
}
Парадигмы программирования
• Императивное
программирование(алгоритмическое)
• Структу́рное программи́рование
• Объектно-ориентированное
программирование
Объекты – ключевое понятие
объектно-ориентированных технологий
оглядитесь: мы живём в мире взаимодействующих объектов!
Каждый объект характеризуется состоянием и
поведением
Программные объекты
• Объекты в программных системах – аналоги объектов в
реальном мире
• Состояние хранится в полях
• Методы изменяют состояние объекта
• Поведение доступно через методы
Сокрытие внутреннего состояния объекта от посторонних глаз
называется инкапсуляцией. Единственный способ изменить
это состояние – вызвать метод объекта.
Программные объекты
Состояние:
• Скорость движения
• Скорость вращения колёс
• Конфигурация шестерней
Поведение:
• Переключить передачи
• Затормозить
• Изменить темп
Уникальность:
• Номер автомобиля
Программные объекты
Основные преимущества:
• Модульность
• Повторное использование кода
• Сокрытие внутреннего представления
• Расширяемость и простота отладки
Класс – множество объектов, имеющих
схожее поведение и свойства
Класс – велосипед, объекты – мой вел, вел Хемуля, …
Классы и объекты в Java
• Заголовок класса
• Тело класса
Поля
Методы
Конструкторы
Инициализаторы
Классы и объекты в Java
• Каждому public классу – свой файл
• Поля и методы могут чередоваться
• Реализация метода не отделяется от объявления метода
Классы и объекты в Java
package com.netcracker.msu;
public class Product {
private int price;
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
Классы и объекты в Java
Модификаторы доступа в Java:
• private – доступ имеют только объекты данного класса
• По умолчанию(default) – package protected, то есть все классы
из данного пакета имеют доступ
• protected – доступ имеют объекты данного класса, все
объекты классов-потомков и все классы из данного пакета
• public – доступ имеют все
Классы и объекты в Java
• Модификатор доступа помещается перед каждым членом
класса (не перед группой)
• Все поля класса стоит помечать как private или protected
• Хотя бы некоторые методы стоит помечать как public
Вообще, рекомендуется скрывать данные, и предоставлять
методы для изменения состояния (как и в реальном мире)
Static Members
• Члены объекта (Instance Members)
– Принадлежат экземпляру класса (поля и методы в обычном
понимании)
• Члены класса (Class Members)
– Принадлежат классу (могут быть использованы и без экземпляра
класса)
– Внутри статических методов нельзя обращаться к нестатическим
членам
Конструкторы
public class A {
public A(){
return;
System.out.println("Create instance");
}
}
Static Members
class Human {
private static int totalCount;
public static int getTotalCount(){
return totalCount;
}
}
…
Human h=null;
h.getTotalCount();
Human.getTotalCount();
…
Инициализаторы
• Статический(при
загрузке класса)
• Объектный(при
создании
экземпляра класса)
class Human {
static {
sout("Class loaded");
}
{
sout("New instance");
}
}
Как именовать классы, поля, методы?
СamelСase:
• UpperCamelCase – классы
• lowerCamelCase – методы, и
переменные
EXAMPLE_CONSTANT - константы
Запуск приложения
public class ClassWithMainMethod {
public static void main(String[] args) {
…
}
}
Организация пространств имён
•
•
•
•
Аналог пространства имён в Java – пакет (package)
Пакеты имеют иерархическую структуру
Обычно именуются маленькими буквами
Одному пакету соответствует одна директория в файловой
системе
Распространение приложений
• Форма распространения java-приложений – JAR-архив
• Идеологически – набор кода и данных, которые нужны
приложению для работы
• Технически – zip-архив с байт-кодом, ресурсами и метаданными
(манифестом)
Запуск приложения:
$ java -jar my-app.jar
Распространение приложений
Файл META-INF/MANIFEST.MF:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 1.5.0_20-141 (Company Inc.)
Main-Class:
com.sun.sample.ClassWithMainMethod
Download