- •Введение
- •Занятие 1. Знакомство с языком программирования Java
- •Занятие 2. Работа с переменными
- •Import javax.Swing.*; // Подключение библиотеки для работы с окнами
- •Следующая тема нашего занятия – Переменные.
- •Занятие 3. Основные алгоритмические конструкции
- •Занятие 4. Основы объектно-ориентированного программирования
- •Import javax.Swing.*; // Подключение библиотеки для работы с окнами
- •Занятие 5. Основы компьютерной графики языка Java
- •Занятие 6. Работа с графическими изображениями
- •Занятие 7. Конструкторы классов, обработчики событий
- •Занятие 8. Создание компьютерной игры "Новогодний дождь" (начало)
- •Занятие 9. Создание компьютерной игры "Новогодний дождь" (продолжение)
- •Занятие 10. Создание компьютерной игры "Новогодний дождь" (продолжение)
- •Занятие 11. Создание компьютерной игры "Новогодний дождь" (окончание)
- •Класс pole:
- •Класс podar:
- •Занятие 12. Создание jar-архива игры "Новогодний дождь"
- •Заключение
Занятие 4. Основы объектно-ориентированного программирования
Создадим новый проект для написания нашей программы.
После создания проекта появится заготовка нашей будущей программы. Закомментированные фрагменты при создании программы можно удалить. В самом верху можно создать наш комментарий:
// Урок №4
Прежде,чем приступить к изучению объектно-ориентированного программирования, нам нужно познакомиться ещё с одним типом данных, который называется логическим типом переменных. Переменная логического типа Boolean изначально может принимать только два значения: либо true (что означает истина),либо false(что означает ложь).Такой тип данных используется, если нужно иметь два варианта значения:например: да – это true, а нет – это false (или: включено – true, а выключено – false). Этот тип переменной очень часто используется в языке Java.
Объявляются переменные данного типа следующим образом:
Boolean val = true;
Переменнаяval может принимать только два значения. Сейчас она имеет значение true, можем присвоить ей другое значение:
val = false;
А сейчас приступим к изучению объектно-ориентированного программирования.
Для начала следует познакомиться с такими понятиями как объект и класс.
Давайте представим такую картину: есть некий зоопарк, в нём живёт множество разнообразных животных. У директора зоопарка есть описание всех животных, в котором указаны характеристики, присутствующие у всех животных, живущих в зоопарке. Сделано оно в виде таблицы. Например:
Таблица №1
Животное |
Масса, кг |
Подводное |
Сухопутное |
Умеет летать |
Слон |
5000 |
нет |
да |
нет |
Тигр |
380 |
нет |
да |
нет |
Орел |
5 |
нет |
да |
да |
Так вот, в понятиях объектно-ориентированного программирования, любое животное зоопарка является объектом, а описание, характеризующее это животное,называется классом. Класс – это инструкция, шаблон, описание. Объектже – это нечто реальное,объект обладает конкретными характеристиками, свойствами. Какой может быть объект в нашем случае? В нашем случае "Слон", "Тигр", "Орел" - это объекты. Они обладают характеристиками, описанными в нашем классе. Т. е., класс один – "животные", и на основании этого класса можно подобрать любое количество животных разного типа.
Можно рассмотреть в качестве примера образование еще одного класса - "автомобили". Создадим для этого класса определенные характеристики, например: масса автомобиля, его максимальная скорость, цвет,марка. А когда на заводе по этим характеристикам будет создан конкретный автомобиль: определённого цвета, марки, имеющий определённую массу, – это будет уже конкретный объект. Если создать другой автомобиль: другого цвета, другой марки, имеющий другую массу – получится ещё один объект. Получается, на основании одного класса, на основании одного описания, шаблона, можно создавать любое количество объектов: сотни, тысячи и даже миллионы.
Класс сам по себе не является объектом, класс – инструкция по созданию объектов. При создании программы на языке программирования Java можно создавать подобные классы. Попробуем это сделать. Необходимо опуститься в самый низ программного кода. Для создания класса используется специальное слово - class. Оно выделяется таким же цветом, как и все служебные специальные слова. После этого слова пишется имя класса. Назовём наш класс givotn (от слова животное).Имя класса формируется точно так же, как имя переменной. По вашему усмотрению,оно может содержать буквы, цифры, символы нижнего подчеркивания. Цифра не может стоять самой первой. Желательно в наименовании класса хотя бы приблизительно отражать его смысл, чтобы было понятно, зачем он создан. После объявления класса следует записать открывающую фигурную скобку и закрывающую фигурную скобку:
// Урок №4
public class prog4 {
public static void main(String[] args) {
}
}
class givotn
{
}
Теперь следует создать в нашем классе поле целого типа,которое назовем mas (от слова масса,которая определяется в цифрах). Следующее поле, которое нам необходимо создать- признак, является ли животное подводным. Этот признак пусть называется podvod. Переменная,обозначающая этот признак, может принимать всего два значения – "да"и "нет", поэтому данная переменная будет логического типа Аналогично можно ввести еще две характеристики - является ли животное сухопутным и является ли оно летающим, назовем их suhoput иlet:
class givotn
{
int mas;
boolean podvod;
boolean suhoput;
boolean let;
}
Таким образом, было создано несколько характеристик,описывающих животное, другими словами мы создали в программе класс. Теперь можно приступить к созданию объекта. Как только был создан class, в этот момент появился новый типс названием этого класса. Этот тип сложнее типов, рассмотренных нами ранее. Можно создать переменную с именем slon типа givotn, и мы создадим тем самым сразу новый, реальный объект.
// Урок №4
public class prog4 {
public static void main(String[] args) {
givotn slon = new givotn();
}
}
class givotn
{
int mas;
boolean podvod;
boolean suhoput;
boolean let;
}
Можно сделать вывод - для того чтобы создать реальный объект, сначала нужно создать переменную с именем, соответствующим этому объекту (в данном случае givotn slon) так же, как мы создавали переменныецелого типа, типа строка или типа символ.Тип новой переменной точно совпадает с именем класса. Конструкция new givotn() создаёт новый объект:реальный объект, который называется slon. После создания объекта следует определить его характеристики. Характеристики объекта указываются через точку(точка в этом случае будет являться оператором). После того как после имени объекта, в данном случае после переменной slon, будет поставлена точка, воткрывшемся окне появившиеся верхние 4 поля – это поля, созданные ранее характеристики объектов нашего класса (cм. рисунок 35):
Рисунок 35
Можно ввести характеристики нашего объекта. Начнем с массы –следует выбрать характеристику mass. Массу можно взять из таблицы №1,у слона указана масса - 5400 кг. Зададим следующую характеристику - является ли слон подводным животным. Для указания этого признака служит переменная podvod, она была определена как переменная логического типа, принимающая лишь два значения – "да"/"нет" ("истина"/"ложь" - "true"/"false"). Поскольку, очевидно, слон не является подводным животным, указываем у этой характеристики значение "false"("нет"). Аналогично можно задать характеристики suhoput (является ли слон сухопутным животным) и let (летает ли слон). Очевидно, значение характеристики suhoput будет "true"("да"). А значение характеристики let будет "false"("нет"). В итоге получим следующий программный код:
// Урок №4
public class prog4 {
public static void main(String[] args) {
givotn slon = new givotn(); // В этой строке создается объект Слон
slon.mas = 5000; // Указываем массу Слона
slon.podvod = false; // Указываем признак Подводного животного - Ложь
slon.suhoput = true; // Указываем признак Сухопутного животного - Ложь
slon.let = false; // Указываем признак Летающего животного - Ложь
}
}
class givotn
{
int mas;
boolean podvod;
boolean suhoput;
boolean let;
}
Переименуем переменнуюslon впеременную slon1.Тогда программный код приобретет следующий вид:
givotn slon1 = new givotn(); // В этой строке создается объект Слон
slon1.mas = 5000; // Указываем массу Слона
slon1.podvod = false; // Указываем признак Подводного животного - Ложь
slon1.suhoput = true; // Указываем признак Сухопутного животного - Ложь
slon1.let = false; // Указываем признак Летающего животного - Ложь
Скопируйте эти строчки, вставьте их ниже и переименуйте в скопированных строчках переменную slon1 в переменную slon2.Предположим, слон под номером 2 весит 6000 кг. Остальные характеристики, как вы догадываетесь, у него те же самые, программный код приобретет следующий вид:
givotn slon1 = new givotn();
slon1.mas = 5000;
slon1.podvod = false;
slon1.suhoput = true;
slon1.let = false;
givotn slon2 = new givotn();
slon2.mas = 6000;
slon2.podvod = false;
slon2.suhoput = true;
slon2.let = false;
Итак, мы создали один класс под названием givotn. Класс – это шаблон, описание и по нему, как по инструкции, можно создавать любое количество разных объектов с разными характеристиками. Вот в данном случае мы создали два объекта, можно создать ещё сколько угодно таких объектов.
Описание класса находится вне зависимости от числа объектов класса в самой нижней части программы. Тело класса открывают и закрывают фигурные скобки (cм. рисунок 36).
Рисунок 36
Итак, создавая класс, мы указали нужные характеристики,которые обозначились в открывающемся окне в виде 4 полей. И на основании этого шаблона, класса, мы создали четыре совершенно разных объекта.
Объектом может быть не только объект нашего мира и не только объекты, окружающие нас в повседневной жизни. Как объект, например, можно представить окно Windows, передвигаемое с помощью мышки по экрану. Какими основными характеристиками будет обладать этот объект? Очевидно,для описания данного объекта нам потребуются следующие характеристики:
ширина;
высота;
расположение – координаты (x,y) левой верхней угловой точки по отношению к экрану (т.к. если окно передвинуть, эта характеристика изменится).
Можно убрать созданный нами класс животных и объекты данного класса, а вместо этого создать класс под названием okno (с указанными выше характеристиками), и на основании этого класса создать объект под названием myOkno1,получится такой код:
// Урок №4
public class prog4 {
public static void main(String[] args) {
okno myOkno1 = new okno(); // Создание объекта
}
}
// Создание класса
class okno
{
int shirina; // Ширина окна
int visota; // Высота окна
int pX; // Отступ верхнего левого угла от левой части экрана
int pY; // Отступ верхнего левого угла от верхней части экрана
}
Мы создали класс okno.Указали нужные характеристики этого класса:
ширина;
высота;
координата верхней левой угловой точки окна по Х;
координата верхней левой угловой точки окна по Y.
Класс okno является описанием всех окон, которые мы будем создавать. Для этого класса определены четыре поля - характеристики окна. После этого был создан новый объект myOkno1, обладающий характеристиками класса okno (создана переменная типа okno). Зададим характеристики нашего объекта. Пусть ширина окна будет 300 пикселей, высота – 200 пикселей. Допустим, координата по Хбудет 10, координата по Y – 20:
okno myOkno1 = newokno();
myOkno1.shirina = 300;
myOkno1.visota = 200;
myOkno1.pX = 10;
myOkno1.pY= 20;
Зададим еще одно окно с другими характеристиками. Для этого нам нужно будет создать еще один объект, назовем переменную, определяющую этот объект - myOkno2. Т. к. характеристики у объектов myOkno1 и myOkno2 одни и те же, меняются только их значения,можно скопировать код, определяющий объект myOkno1и изменить его для объекта myOkno2. Получится следующий программный код:
okno myOkno1 = newokno();
myOkno1.shirina = 300;
myOkno1.visota = 200;
myOkno1.pX = 10;
myOkno1.pY = 20;
okno myOkno2 = new okno();
myOkno2.shirina = 600;
myOkno2.visota = 700;
myOkno2.pX = 50;
myOkno2.pY = 90;
Класс характеризуется тем, что все признаки определены внутри класса. Т.е., принадлежат этому классу. Мы имеем целостную структуру,содержащую несколько характеристик – некий "контейнер" с характеристиками. Напишем следующую программу:
// Урок №4
