Тема: Використання класів в програмах на мові Java
2.1 Понття ООП
Абревіатура ООП розшифровується як "Об'єктно-орієнтоване програмування".
В попередніх практияних роботах ми використовували Scanner для зчитування символів, які вводяться користувачем. Scanner оголошується настуупним чином:
Scanner scan = новий Scanner(System.in);
Створюючи новий об'єкт типу Scanner можна працювати, задаючи різні методи. Нам не важливо, яка робота проходить усередині – головне ми можемо використовувати цей метод знову та знову, друкуючі різну інформацію
Scanner можна використовувати неодноразово. Він може мати різні параметри та назви- scan, sanner, sc або sc1. То є різні об'єкти одного класу.
Кожен об'єкт має властивості. Наприклад, властивості машини: модель, колір, розмір тощо.
Кожен об'єкт має методи (тобто дії, які може робити об'єкт). Наприклад, методи машини: загальмувати, натиснути газ і т.д.
Можна сказати, що Ваш друг - об'єкт класу "Людина", маленький собака або великий ротвелер - об'єкти класу "Собака", із загальними методами та властивостями, але різними індивідуальними параметрами.
Окрім базових понять "класу" та "об'єкта" розглянемо основні принципи ООП - успадкування, інкапсуляція, поліморфізм.
Принцип 1. Спадкування
Можете думати про нього як про ще одного полегшителя роботи. Ви вже знаєте, що завдяки класам та об'єктам Ви можете не прописувати код щоразу заново, а просто створювати об'єкти класу. Спадкування дозволяє економити час під час створення нового класу. Уявіть, що у Вас є клас "Кішка". Вона має властивості - ім'я, колір і порода. У цього класу є методи - спати, їсти, грати, муркотіти. А тепер, уявимо, нам потрібно створити новий клас - "Кошеня". У нього теж є ім'я, колір та порода. Він теж вміє спати, їсти, грати, муркотіти. Але, крім того, він може, наприклад, " шукати маму " .
Завдяки успадкування, можна не прописувати всі методи та властивості класу заново. Можна просто вказати, що клас "Кошеня" успадковує клас "Кіт", і додати відсутні методи і параметри.
Принцип 2. Інкапсуляція
"Інкапсуляція" можна розшифрувати як "укладання в капсулу". Якщо простіше - це "забезпечення безпеки" у Java.
Справа в тому, що в кожній програмі є параметри, до яких не можна надавати доступ всім. Наприклад, хіба буде цікаво грати в гру, якщо користувач зможе вільно змінювати свої очки сам? Інкапсуляція дозволяє регулювати рівні доступу до програми.
Принцип 3. Поліморфізм
Це - "полегшувач роботи ", або "навіщо запам'ятовувати багато методів, якщо можна використовувати тільки один". Сенс поліморфізму в тому, що Ви можете давати одну й ту саму назву для методів, які мають однаковий зміст, але приймають різні типи даних. Хоча це може здатися дивним, але в інших мовах - де немає поліморфізму - потрібно іноді запам'ятовувати назви 5 методів замість одного - тільки через те, що вони працюють з різними типами даних.
2.2 Поняття класу
Клас - це "шаблон для об'єкта", який створюєтеться у Java. Поняття класу, як і поняття об'єкта є основою ООП.
Розглянемо наступний код
class Test {
public static void main(String args[]){
int k;
k = 10;
System.out.println(k);
}
}
Код починається з рядка "class Test". Дійсно, методи, які Ви прописували раніше в процесі навчання, не можуть існувати поза якимось класом.
2.2.1 Класи - "всередині" та "зовні"
Відповідно до "інкапсуляція", то розумієте, щ інтерфейс - те, що бачить кінцевий користувач, і те, як механізм влаштований всередині - різні речі. Так само і класи в Java мають зовнішній "інтерфейс" та внутрішню "начинку". Для створення класу необхідно вміти працювати і з тим, і з іншим.
Зовні. Як створити "об'єкт класу"
Якщо, як було зазначено, клас - це " трафарет " , тоді те, що ми намалювали з цього трафарету - це " об'єкт класу " .
Розглянемо приклад:
import java.util.Scanner; // імпорт сканера
class Test {
public static void main(String args[]){
System.out.print("Введіть будь-яке ціле число від 1 до 10: ");
Scanner scan = новий Scanner(System.in);
int number = scan.nextInt();
System.out.println ("Ви ввели число" + number);
}
}
Розглянемо: Scanner scan = новий Scanner(System.in);
Даний запис відповідає схемі створення об'єкта класу наведену вище. А в дужках, як говорилося, вказується параметр, необхідний для створення об'єкта - у даному випадку, потік введення System.in.
Розглянемо приклад, в якому необхідно створити базу даних користувачів. Для цього:
Спроектувати клас User, який матиме поля — ім'я (String) вік (short) і зріст (int).
Створити необхідну кількість конструкторів, щоб ім'я, вік і зріст можна було вказувати в будь-якому порядку.
Код програми:
class User { //Клас користувачів
String name; //Ім’я
short age; //Вік
int height; //Зріст
// Конструктори в яких змінена черга того, як вказуються ім'я, вік і зріст
public User(String name,short age,int height){ // ім'я, вік і зріст----1
this.name = name;
this.age = age;
this.height = height;
}
public User(String name,int height,short age){ ім'я зріст вік -----2
this.name = name;
this.height = height;
this.age = age;
}
public User(short age,int height,String name){// вік зріст ім'я ----3
this.age = age;
this.height = height;
this.name = name;
}
public User(short age,String name,int height){ вік ім'я зріст -----4
this.name = name;
this.age = age;
this.height = height;
}
public User(int height, String name, short age){// зріст ім'я вік ----5
this.name = name;
this.age = age;
this.height = height;
}
public User(int height, short age, String name){ зріст вік ім'я ----6
this.name = name;
this.age = age;
this.height = height;
}
}
public class Main {
public static void main(String[] args) {
User tany = new User(150, "Tany", (short) 15);//конструктор 5
User dima = new User("Дима", (short) 23 , 180); //конструктор 1
User toxa = new User( (short) 30 , 185 , "Тоха" );//конструктор 3
System.out.println("Имя_ " + tany.name + "," +"Возраст_ " + tany.age + "," +"Рост_ " + tany.height);
System.out.println("Имя_ " + dima.name + "," +"Возраст_ " + dima.age + "," +"Рост_ " + dima.height);
System.out.println("Имя_ " + toxa.name + "," +"Возраст_ " + toxa.age + "," +"Рост_ " + toxa.height);
}
}
Результат виконання:
Ввести програму в середовищі Eclips. Перевірити її на працездатність.