Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

ООП

No description
by

Liubov Tsop

on 7 November 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of ООП

ООП
підсумуємо
програма - це набір об'єктів, що мають стан та поведінку
Об'єкти взаємодіють використовуючи повідомлення
будується ієрархія об'єктів
стійкість та керованість системи забезпечуються за рахунок чіткого розподілення відповідальності об'єктів
повна ізольованость внутрішньої структури об'єкта від зовнішнього середовища

Фундаментальні поняття
ООП-
Об'є́ктно-орієнто́ване програмува́ння

Одна з парадигм програмування, яка розглядає програму як множину «об'єктів», що взаємодіють між собою. Основу ООП складають три основні концепції: інкапсуляція, успадкування та поліморфізм. Одною з переваг ООП є краща модульність програмного забезпечення (тисячу функцій процедурної мови, в ООП можна замінити кількома десятками класів із своїми методами)
Історія
Ця парадигма з'явилась в 1960-тих роках, вона не мала широкого застосування до 1990-тих, коли розвиток комп'ютерів та комп'ютерних мереж дозволив писати надзвичайно об'ємне і складне програмне забезпечення, що змусило переглянути підходи до написання програм.
Об'єктно-орієнтоване програмування сягає своїм корінням до створення мови програмування Симула в 1960-тих роках, одночасно з посиленням дискусій про кризу програмного забезпечення. Разом із тим, як ускладнювалось апаратне та програмне забезпечення, було дуже важко зберегти якість програм. Об'єктно-орієнтоване програмування частково розв'язує цю проблему шляхом наголошення на модульності програми.
Сьогодні багато мов програмування або підтримують ООП або ж є цілком об'єктно-орієнтованими (зокрема, Java,
C#
, C++, Python, PHP, Ruby та Objective-C, ActionScript 3).
На відміну від традиційних поглядів, коли програму розглядали як
набір підпрограм
, або як перелік інструкцій комп'ютеру, ООП програми можна вважати
сукупністю об'єктів
. Відповідно до парадигми об'єктно-орієнтованого програмування, кожний об'єкт здатний отримувати повідомлення, обробляти дані, та надсилати повідомлення іншим об'єктам.
Кожен об'єкт — своєрідний незалежний автомат з окремим призначенням та відповідальністю
Об'єктно-орієнтоване програмування - це метод програмування, заснований на поданні програми у вигляді сукупності взаємодіючих
об'єктів
, кожен з яких є екземпляром певного класу, а
класи
є членами певної ієрархії наслідування. Програмісти спочатку пишуть клас, а на його основі при виконанні програми створюються конкретні об'єкти (
екземпляри класів
). На основі класів можна створювати нові, які розширюють базовий клас і таким чином створюється
ієрархія класів.
об'єктно-орієнтований підхід полягає в наступному наборі основних принципів:
- Все є об'єктами.
- Всі дії та розрахунки виконуються шляхом взаємодії (обміну даними) між об'єктами, при якій один об'єкт потребує, щоб інший об'єкт виконав деяку дію. Об'єкти взаємодіють, надсилаючи і отримуючи повідомлення. Повідомлення — це запит на виконання дії, доповнений набором аргументів, які можуть знадобитися при виконанні дії.
- Кожен об'єкт має незалежну пам'ять, яка складається з інших об'єктів.
- Кожен об'єкт є представником (екземпляром, примірником) класу, який виражає загальні властивості об'єктів.
- У класі задається поведінка (функціональність) об'єкта. Таким чином усі об'єкти, які є екземплярами одного класу, можуть виконувати одні й ті ж самі дії.
- Класи організовані у єдину деревоподібну структуру з загальним корінням, яка називається ієрархією успадкування.
Клас
Об'єкт
Метод
Обмін повідомленнями
Успадкування
Приховування інформації
Абстрагування
Поліморфізм
КЛАС
Клас — це спеціальна конструкція об'єктно-орієнованої мови програмування, що використовується для групування пов'язаних змінних та функцій. При цьому згідно з термінологією ООП глобальні змінні класу (члени-змінні) називаються
полями даних
(також
властивостями
або
атрибутами
), а
члени-функції називають методами класу
. Створений та ініціалізований
екземпляр класу
називають
об'єктом класу
. На основі одного класу, може бути створено безліч об'єктів, які відрізнятимуться один від одного своїм станом (значеннями полів).
Клас можна порівнювати з формою для випічки печива — форма одна, а печива можна випекти безліч. Печиво — це конкретні об'єкти, екземпляри класу печиво, яке може бути з різною начинкою.Поля дозволяють вмістити дані про певний реальний об'єкт, а методи здійснювати обробку цих даних.

Наприклад, можна створити загальний клас Людина з полями Ім'я та Прізвище, рік народження, професія, зарплата. При створенні ж на основі класу конкретного екземпляру, дані поля заповнюються конкретними даними про певну людину. Обробкою цих даних може займатися відповідні методи. Наприклад, можна створити метод для обчислення віку людини і т.п.
приклад
Методи класів
Через методи реалізується поведінка об'єктів. Практично вся робота з об'єктами відбувається через
методи
. Вони можуть змінювати стан об'єкта або ж просто надавати доступ до даних інкапсульованих в об'єкті. Існує кілька видів методів, які мають деякі відмінності в різних мовах програмування. До
методів та полів
даних можна надавати різні
права доступу
, від яких залежатиме доступ до них з різних частин програмного коду. Права доступу та вид методів задаються
модифікаторами
при описі методів. Метод, який проводить створення та початкову ініціалізацію екземпляра класу називають
конструктором класу
. Метод, який проводить знищення об'єкта, називають
деструктором
класу.
Об'єкт
об'єкт є окремою одиницею сховища даних під час роботи програм, що використовується в якості базового елемента побудови програм. Ці об'єкти можуть взаємодіяти
один з одним,
на противагу традиційним поглядам, відповідно до яких програма розглядається як набір підпрограм, або просто перелік інструкцій комп'ютеру.
Кожний об'єкт здатний отримувати
повідомлення, обробляти дані, та надсилати повідомлення
іншим об'єктам. Кожний об'єкт може розглядатись як незалежний малий автомат або актор, з визначеним призначенням або відповідальністю.
Для більшості об'єктів, отримувати доступ до властивостей можна
лише через методи
, полегшуючи, в такий спосіб, забезпечення правильності стану даних об'єкта (забезпечуватиметься інваріантність класів). Деякі мови програмування не розрізняють властивості та методи.
Три властивості характеризують об'єкти:

Унікальність: властивість об'єкта, яка відрізняє його від інших об'єктів.
Стан: описує дані, що зберігаються в об'єкті.
Поведінка: описує методи в інтерфейсі через які може використовуватись об'єкт.
1 int result = 1 ;
// Initialization
2 arith_Obj1 = new Arith_Class();
// Creating a new object of Arith_Class
3 result = arith_Obj1.multiply(78,69);

// returned value of multiply function,
store in result variable.
приклад
Ме́тод

підпрограма (процедура, функція), що використовується виключно разом із класом (методи класу) або з об'єктом (методи екземпляра).
Подібно до процедури в процедурних мовах програмування, метод, як правило, складається із
послідовності операцій для виконання дії
, множини вхідних параметрів для налаштування цієї дії, та, можливо, вихідного значення деякого типу (значення, що повертається).
Призначення методів полягає
в здійсненні певних дій над полями класу
(змінними-членами) та
надання механізму доступу
до цих полів даних, що інкапсулюються в об'єкті або класі.
В залежності від способу використання, методи поділяються на:
змістовні
— надаються клієнтам класу і визначають його інтерфейс, звичайно є публічними;
спеціальні
— викликаються автоматичо при створенні (конструктори), знищенні (деструктори), копіюванні (конструктори копіювання), перетворенні типу тощо;
допоміжні
— викликаються з змістовних та спеціальних методів, звичайно не надаються клієнтам класу і є захиженими або приватними.

В залежності від впливу на стан об'єкта, методи поділяються на:
конструктори — встановлюють початковий стан об'єкта;
деструктори — скидають стан об'єкта;
селектори (геттери) — надають значення атрибута;
модифікатори (сеттери) — встановлюють значення атрибута;
ітератори — надають послідовний доступ до множини атрибутів.
abstract class Main
{ abstract int rectangle(int h, int w);
// abstract method signature
}
Успадкува́ння
(наслідування)
механізм утворення нових класів на основі використання вже існуючих. При цьому властивості і функціональність батьківського класу переходять до класу нащадка(дочірнього).
Визначення нового класу (породжений клас, підклас,
англ. derived class
,
англ. subclass
) може базуватись на визначенні вже існуючого (базовий клас,
англ. base class
, англ.
superclass
). В такому випадку, новий клас отримає
властивості та поведінку
базового класу, та доповнить їх своїми власними.
У випадку
одиничного
успадкування, у кожного класу може бути лише один безпосередній базовий клас. У випадку
множинного
успадкування, дозволяється існування декількох безпосередніх надкласів.
Застосування механізму успадкування дозволяє покращити повторне використання коду шляхом використання вже визначених властивостей та методів (поведінки) базових класів.
Приховування інформації
(інкапсуляція)
Приховування деталей про роботу класів від об'єктів, що їх використовують або надсилають їм повідомлення. Так, наприклад, клас
Собака
має метод
гавкати()
. Реалізація цього методу описує як саме повинно відбуватись гавкання (приміром, спочатку
вдихнути()
а потім
видихнути()
на обраній частоті та гучності). Петро, хазяїн пса Сірка, не повинен знати як він гавкає. Інкапсуляція досягається шляхом вказування,
які класи можуть звертатися до членів об'єкта
. Як наслідок, кожен об'єкт представляє кожному іншому класу певний інтерфейс — члени, доступні іншим класам. Інкапсуляція потрібна для того, аби запобігти використанню користувачами інтерфейсу тих
частин реалізації, які, швидше за все, будуть змінюватись
. Це дозволить полегшити внесення змін, тобто, без потреби змінювати і користувачів інтерфейсу.
Наприклад, інтерфейс може гарантувати, що щенята можуть додаватись лише до об'єктів
класу Собака
кодом самого класу. Часто, члени класу позначаються як:

публічні
(англ. public),

захищені
(англ. protected) та
приватні
(англ. private),
визначаючи, чи доступні вони всім класам, підкласам, або лише до класу в якому їх визначено.
Деякі мови програмування йдуть ще далі: С# використовує ключове слово
private
для обмеження доступу, що буде дозволений лише з методів того самого класу,
protected
— лише з методів того самого класу і його нащадків та з класів із того ж самого пакету
Абстрагування
спосіб та метод відокремлення деталей з метою отримання можливості зосередитись на найважливіших особливостях об'єкта.
Грубо кажучи, в програмуванні, абстрагування може бути або керування, або даних.
Абстрагування керування
є абстрагуванням від деталей дій, а
абстрагування даних
є абстрагуванням структур даних.

Наприклад, абстрагування керування в структурному програмуванні полягає у використанні підпрограм та визначених керівних конструкцій. Абстрагування даних дозволяє обробляти одиниці даних у змістовний спосіб. Наприклад, абстрагування є основною мотивацією створення типів даних. Об'єктно-орієнтоване програмування може розглядатись як спроба абстрагувати як керування так і дані.
Поліморфізм
Поліморфізм означає залежність поведінки від класу, в якому ця поведінка викликається, тобто, два або більше класів можуть
реагувати по-різному
на однакові повідомлення.

Наприклад, якщо
Собака
отримує команду
голос()
, то у відповідь можна отримати
Гав
;
якщо
Свиня
отримує команду
голос ()
, то у відповідь можна отримати
Рох-рох
.

На практиці - це реалізовується шляхом реалізації ряду підпрограм (функцій, процедур, методи тощо) з
однаковими іменами
, але з різними параметрами. В залежності від того, що
передається і вибирається
відповідна підпрограма.
Підсумуємо!
Клас
Об'єкт
Метод
Обмін повідомленнями
Успадкування
Приховування інформації
Абстрагування
Поліморфізм
Плани на майбутнє
Нехай коже подумає, як можна реалізувтаи подані принципи ООП, адже на наступній лабораторній роботі кожен має представити свій міні проект.
Дякую за увагу!
Доступ для членов
класса
public
protected
internel
protected internal
private

class SomeClass
{
public int i = 1, j = 2;
protected int k = 3;
public void F()
{

}
}

Приклад створення класу
Приклад застосування методу
using System;
class Man{
public string name;
public int age;
public Man(string n,int a){
name = n;
age = a;
}
public void Show(){
Console.WriteLine("Імя = "+name+"\Вік = "+age);
}
}
class Sample
{
static void Main()
{
try{
Man obj = new Man("Fire",56);
obj.Show();
}
catch(Exception er){
Console.WriteLine(er.Message);
}
Console.Read();

}
}
Full transcript