Поділіться своєю думкою про онлайн уроки інформатики. Пройдіть анонімне опитування на головній сторінці сайту
python
class Car:
def __init__(self, brand, color, speed):
self.brand = brand
self.color = color
self.speed = speed
my_car = Car("Toyota", "Blue", 120)
pascal
type
Calculator = class
public
function Add(a, b: Integer): Integer;
end;
function Calculator.Add(a, b: Integer): Integer;
begin
Result := a + b;
end;
var
myCalculator: Calculator;
sum: Integer;
begin
myCalculator := Calculator.Create;
sum := myCalculator.Add(5, 7);
end.
python
Copy code
class Phone:
def __init__(self, brand, model):
self.brand = brand
self.model = model
class Smartphone(Phone):
def __init__(self, brand, model, os):
super().__init__(brand, model)
self.os = os
my_phone = Smartphone("Samsung", "Galaxy", "Android")
Опрацювати теоретичний матеріал
Об'єкт (від латинською objectum — предмет, явище) — це те, на що спрямована певна діяльність (на противагу суб'єкту, який здійснює таку діяльність).
Ми живемо в оточенні величезної кількості різноманітних об'єктів. Будь-яка інформація, яку ми отримуємо, пов'язана з певними об'єктами. Об'єктами є не лише предмети чи явища матеріального світу, але й поняття, які створюють і використовують люди під час спілкування. Наприклад «освіта», «держава» тощо. Кожний об'єкт має свою назву: «м'яч», «годинник», «чашка», «книга». Крім назви кожний об'єкт має низку властивостей (параметрів), значення яких повністю описує об'єкт. Наприклад, об'єкт «учень» має такі властивості (подано невичерпний перелік): вік, зріст, маса тіла, успішність з певного предмету тощо.
Властивості поділяють на:
кількісні — такі властивості можна подати числом у певних одиницях виміру (метрах, секундах, грамах);
якісні — такі властивості можна лише назвати. Наприклад, характер учня може бути спокійним або неврівноваженим.
Значення властивостей об'єкта у певний момент часу визначають його стан. Вони можуть змінюватися, але їхня сукупність залишається сталою. Якщо така сукупність зазнає змін, то ми маємо справу вже з іншим об'єктом. Наприклад значення параметра «зріст» об'єкта «учень Сашко» може збільшуватися. Але якщо у нього зникла властивість «успішність», то Сашко завершив навчання.
Дії можуть виконувати власне об'єкти або їх виконують над об'єктами. Наприклад, об'єкт «учень» може виконувати такі дії: читати, грати у футбол, розв'язувати задачу з фізики. У свою чергу, над цим об'єктом можна виконувати певні дії: вимірювати зріст, проводити виховну бесіду тощо.
Подія — зміна властивостей об'єкта, взаємодія між об'єктами, утворення нового об'єкта або знищення наявного об'єкта.
Середовище об'єкта — середовище, у якому перебуває об'єкт, незалежно від того, які дії ним чи над ним (крім знищення об'єкта) виконано.
Розглянемо об'єктно-орієнтований підхід до процесу створення й використання програмного забезпечення. Якщо створення програм — далеке й необов'язкове майбутнє учня, то їхнє використання — це сьогодення, якого не уникнути. Спочатку потрібно ознайомитися з деякими базовими поняттями.
Комп'ютерна програма — це запис послідовності вказівок для комп'ютера.
Застосунок (застосовна програма, прикладна програма, англійською application, application software) — комп'ютерна програма, що дає змогу вирішувати конкретні прикладні задачі користувача. Це поняття використовують, щоб підкреслити відмінність від операційної системи, драйверів, бібліотек, системних утиліт тощо (які забезпечують функціонування власне комп'ютерної системи та підтримують її працездатність) та засобів і середовищ розробки (про всі ці поняття йтиметься далі).
Об'єктно-орієнтоване програмування — це метод програмування, який розглядає програму як множину «об'єктів», що взаємодіють між собою. Інакше кажучи, у такому підході:
все, що розглядають, є об'єктами;
всі дії та розрахунки виконують шляхом взаємодії (обміну даними) між об'єктами, при якій один об'єкт потребує, щоб інший об'єкт виконав деяку дію. Об'єкти взаємодіють, надсилаючи і отримуючи повідомлення — запити на виконання дії, доповнений набором аргументів (даних), які можуть знадобитися при виконанні дії;
кожен об'єкт має незалежну пам'ять, яка складається з інших об'єктів;
кожен об'єкт є представником (екземпляром) класу, який виражає загальні властивості об'єктів;
клас задає поведінку об'єкта. Інакше кажучи, усі об'єкти, які є представниками одного класу, можуть виконувати одні й ті самі дії;
класи утворюють ієрархією успадкування: пам'ять та поведінка, пов'язані з представниками деякого класу, автоматично доступні будь-якому нащадку — класу, розташованому нижче в ієрархічному дереві.
Фундаментальні поняття об'єктно-орієнтованого програмування:
клас визначає властивості деякої сутності та методи (дії, які вона здатна виконувати). Наприклад, клас вид cобака характеризують рисами, притаманними всім собакам. До методів цього класу відносять, наприклад, здатність гавкати;
об'єкт — окремий представник класу. Наприклад, об'єкт Бровко є представником виду собак — окремим варіантом значення властивостей;
метод — дія, яку об'єкт може виконувати. Наприклад, гавкати і скавучати — методи собаки. Тому Бровко спроможний гавкати;
поведінка — сукупність методів (дій, які об'єкт може виконувати);
обмін повідомленнями — передавання даних від одного процесу іншому або надсилання викликів методів;
абстрагування — спрощення складної дійсності моделюванням класів, що відповідають проблемі, й використання найприйнятнішого рівня деталізації окремих аспектів проблеми. Наприклад, більшу частину часу Бровка можна розглядати лише як собаку. А от як він когось зненацька вкусить, потрібно отримати доступ до інформації, специфічної саме для нього: хто господар, чи був щеплений проти сказу тощо;
успадкування. Клас може мати «підкласи» — спеціалізовані версії «надкласу». Наприклад, вид собака може мати породи коллі, пекінес, вівчарка тощо. Бровко може бути представником класу Вівчарка. Підкласи успадковують властивості й поведінку (методи) своїх батьківських класів, і можуть мати свої власні додатково. Успадкування може бути одиничне (один безпосередній батьківський клас) та множинне (кілька батьківських класів). Наприклад, при розгляді громадянства й етнічного походження окремої людини;
інкапсуляція — приховування деталей інформації про роботу класів від об'єктів, що їх використовують або надсилають їм повідомлення. Наприклад, для господаря собаки непотрібно знати, як власне гавкає Бровко. Аби Бровко гавкав на непрошеного гостя;
поліморфізм — залежність поведінки від класу, в якому цю поведінку викликають. Інакше кажучи, різні класи можуть реагувати по різному на однакові повідомлення. Наприклад, пес-охоронець, почувши: «Фас!», має накинутися на злодія. А курка — відскочити убік або ніяк не реагувати.
Python (Tkinter):
python
КопіюватиРедагувати
import tkinter as tk # Імпортуємо бібліотеку tkinter для створення графічного інтерфейсу
def change_color(): # Оголошуємо функцію change_color
button.config(bg="lightblue")
# Змінюємо властивість `bg` (колір фону) об'єкта `button` на "lightblue"
root = tk.Tk() # Створюємо головне вікно програми
root.title("Зміна кольору кнопки") # Встановлюємо заголовок вікна
button = tk.Button(root, text="Натисни мене", command=change_color, bg="white")
# Створюємо об'єкт кнопки з текстом "Натисни мене".
# Спочатку її колір фону (bg) білий ("white").
# При натисканні викликається функція change_color.
button.pack(pady=10) # Додаємо кнопку у вікно з відступом 10 пікселів по вертикалі
root.mainloop() # Запускаємо основний цикл програми
Lazarus:
pascal
КопіюватиРедагувати
procedure TForm1.Button1Click(Sender: TObject);
// Обробник події для кнопки (об'єкта Button1)
begin
Button1.Color := clSkyBlue;
// Змінюємо властивість Color об'єкта Button1 на clSkyBlue (блакитний колір)
end;
Алгоритм створення в Lazarus:
Форма: створіть форму.
Елементи: додайте кнопку (TButton).
Подія кнопки: встановіть обробник події OnClick для кнопки.
Python (Tkinter):
python
КопіюватиРедагувати
import tkinter as tk # Імпортуємо бібліотеку tkinter
def update_label(): # Оголошуємо функцію update_label
label.config(text="Текст змінено!")
# Змінюємо властивість `text` об'єкта `label` на "Текст змінено!"
root = tk.Tk() # Створюємо головне вікно програми
root.title("Зміна тексту мітки") # Встановлюємо заголовок вікна
label = tk.Label(root, text="Початковий текст")
# Створюємо об'єкт мітки з початковим текстом "Початковий текст"
label.pack(pady=10) # Додаємо мітку у вікно з відступом 10 пікселів по вертикалі
button = tk.Button(root, text="Змінити текст", command=update_label)
# Створюємо кнопку, яка викликає функцію update_label
button.pack(pady=10) # Додаємо кнопку у вікно
root.mainloop() # Запускаємо основний цикл програми
Lazarus:
pascal
КопіюватиРедагувати
procedure TForm1.Button1Click(Sender: TObject);
// Обробник події для кнопки (об'єкта Button1)
begin
Label1.Caption := 'Текст змінено!';
// Змінюємо властивість Caption об'єкта Label1 на "Текст змінено!"
end;
Алгоритм створення в Lazarus:
Форма: створіть форму.
Елементи: додайте мітку (TLabel) і кнопку (TButton).
Подія кнопки: встановіть обробник події OnClick для кнопки.
Python (Tkinter):
python
КопіюватиРедагувати
import tkinter as tk # Імпортуємо бібліотеку tkinter
def move_button(): # Оголошуємо функцію move_button
button.place(x=button.winfo_x() + 10, y=button.winfo_y() + 10)
# Переміщуємо кнопку на 10 пікселів вправо і вниз, використовуючи метод `place`
root = tk.Tk() # Створюємо головне вікно програми
root.title("Рух кнопки") # Встановлюємо заголовок вікна
root.geometry("200x200") # Встановлюємо розмір вікна
button = tk.Button(root, text="Рухай мене", command=move_button)
# Створюємо об'єкт кнопки, яка викликає функцію move_button
button.place(x=50, y=50) # Розташовуємо кнопку на координатах (50, 50)
root.mainloop() # Запускаємо основний цикл програми
Lazarus:
pascal
КопіюватиРедагувати
procedure TForm1.Button1Click(Sender: TObject);
// Обробник події для кнопки (об'єкта Button1)
begin
Button1.Left := Button1.Left + 10;
// Збільшуємо координату Left (ліворуч) об'єкта Button1 на 10
Button1.Top := Button1.Top + 10;
// Збільшуємо координату Top (зверху) об'єкта Button1 на 10
end;
Алгоритм створення в Lazarus:
Форма: створіть форму.
Елементи: додайте кнопку (TButton).
Подія кнопки: встановіть обробник події OnClick для кнопки.
Тест з основ теорії об'єктів у програмуванні:
Що таке об'єкт в програмуванні?
a) Спеціальна програма.
b) Конкретний представник класу.
c) Вид програмного коду.
Правильна відповідь: b) Конкретний представник класу.
Які властивості може мати об'єкт "автомобіль"?
a) Вага, швидкість, колір.
b) Смак, довжина, музичні здібності.
c) Назва, розмір, форма.
Правильна відповідь: a) Вага, швидкість, колір.
Що роблять методи об'єкта?
a) Задають його основні характеристики.
b) Визначають, які функції він може виконувати.
c) Призначають йому ім'я.
Правильна відповідь: b) Визначають, які функції він може виконувати.
Що таке "властивості" об'єкта?
a) Особливості, які роблять його унікальним.
b) Дії, які він виконує.
c) Кількість збережених даних.
Правильна відповідь: a) Особливості, які роблять його унікальним.
Як називається "фокус", який може виконувати об'єкт?
a) Метод.
b) Властивість.
c) Задача.
Правильна відповідь: a) Метод.
Що таке "спадкування" у програмуванні?
a) Об'єднання об'єктів.
b) Передача властивостей і методів від одного класу до іншого.
c) Виклик методів об'єкта.
Правильна відповідь: b) Передача властивостей і методів від одного класу до іншого.
Як можна порівняти об'єкти на схожість?
a) За їхньою швидкістю.
b) За їхніми властивостями.
c) За кольором.
Правильна відповідь: b) За їхніми властивостями.
Якість об'єкта, яка характеризує його особливості, називається:
a) Властивість.
b) Спадкування.
c) Унікальність.
Правильна відповідь: a) Властивість.
Що може бути прикладом об'єкта в програмуванні?
a) Вся програма.
b) Число.
c) Книга, автомобіль, смартфон.
Правильна відповідь: c) Книга, автомобіль, смартфон.
Що робить об'єкт "Калькулятор" у нашому житті?
a) Пече печиво.
b) Додає числа.
c) Грає на музичних інструментах.
Правильна відповідь: b) Додає числа.