Модульність побудови – основний засіб боротьби із складністю системи. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Модульність побудови – основний засіб боротьби із складністю системи.



2. Друга роль класу. Клас – це тип даних, який задає реалізацію деякої абстракції даних, характерної для проблемної області, для якої створюється програмна система.

Склад класу як типу даних визначається не архітектурними міркуваннями, а тією абстракцією даних, яку повинен реалізувати клас. Якщо ви створюєте клас Account, що реалізовує таку абстракцію, як банківський рахунок, то в цей клас не можна додати поля з класу Car, задаючого автомобіль. З іншого боку в цьому класі мають бути всі поля і всі методи, необхідні клієнтам класу, що оперують з банківськими рахунками.

В С# оголошення класів вводяться ключовим словом class.

Клас є основою для створення об'єктів. В класі визначаються дані і код, який працює з цими даними.

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

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

Формально клас описується таким чином:

Синтаксис опису класу:

тип доступу class им’я_класу {

тип_доступу тип им’я змінної1;

тип_доступу тип им’я змінної2;

тип_доступу тип_результату

им’я _методу1 (список_параметрів) { тіло_методу }

}

 

де тип_доступу визначає область видимості класу. Для класів визначено такі модифікатори доступу:

public -клас доступний для інших компонент;

internal -клас видимий в середині цього компонента (збірки).

 

Для членів класу (даних і методів) визначені такі модифікатори доступу:

рublic -члени класу доступні за межами даного класу;

internal -члени класу доступні в межах однієї збірки;

рrotected - члени класу доступні усередині даного класу;

private - члени класу доступні тільки для інших членів даного класу.

За замовчанням застосовується модифікатор internal.

Членами класу можуть бути:

• Константи (const)

• Поля (field)

• Конструктори (у тому числі без параметрів)

• Деструктори

• Методи

• Властивості (property)

• Індексатори (властивості з параметрами)

• Події (event)

• Вкладені типи.

Звернення до поля класу виконується за допомогою операції доступу (крапка). Праворуч від крапки задається ім'я поля, зліва — ім'я екземпляра для звичайних полів або ім'я класу для статичних. Створення об’єкту класу виконується оператором new.

Синтаксис оператора new:

 

Ім’я класу об’єкт = new Ім’я класу();

 

Приклад. Визначається простий клас Demo і два способи звернення до його полів.

using System;namespace ConsoleApplication1{ class Demo { public int a = 1; // поле даних public const double c = 1.66; // константа public static string s = "Demo"; // статичне поле класу double y; // закрите поле даних } class Class1 { static void Main() { Demo x = new Demo(); // створення екземпляра класу Demo Console.WriteLine(x.a); // x.a - звернення до поля класу Console.WriteLine(Demo.c); // Demo.c - звернення до константи Console.WriteLine(Demo.s); // звернення до статичного поля } }}

 

Питання

1. Які основні принципи об’єктно-орієнтованої парадигми?

2. У чому полягає сутність механізму абстракції даних?

3. Які парадигми підтримуються у С++?

4. Які концепції покладено в основу об’єктно-орієнтованої парадигми?

5. Назвіть основні відміни об’єктно-орієнтованого програмуванні від структурного.

6. Що таке об’єкт у об’єктно-орієнтованому програмуванні і як він використовується?

7. Що таке “властивість” об’єкта?

8. Що таке “наслідування”. Навести приклад

9. Що таке “поліморфізм” і стосовно якої парадигми він використовується?

10. Що таке “інкапсуляція” і до якої парадигми належить це поняття?

11. Яка особливість реалізації принципів ООП в C# порівняно з C++?

12. Які дві ролі класу в C#?


Тема 3. Програмування за прототипом і сценарне програмування

Лекція 3. Програмування за прототипом і сценарне програмування

Програмування за прототипом

В цьому стилі програмування поняття класу відсутнє, а повторне використання (наслідування) виконується клонуванням існуючого екземпляра об'єкту - прототипу.

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

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

Сценарне програмування

Сценарні мови (або мови скриптів (scripting languages)) мають достатньо тривалу історію розвитку. Концепція сценарного програмування з'явилася як розвиток мови LISP (парадигми функціонального програмування). До перших сценарних мов відносять вбудовані засоби управління командної оболонки операційною системою. Командний файл на мові операційної системи, представляє собою управляючий сценарій, який виконує задану послідовність дій (*.bat-файл).

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

Характерною рисою сценарних мов є формування програми на деякій зовнішній мові як результату виконання сценарію (наприклад, PHP). Сценарна мова мало спирається на створення кінцевого продукту з нуля і більшою мірою – на використання тих можливостей, які має операційна система, графічне середовище, прикладна сервісна машина та інші подібні компоненти, взаємодія яких здійснюється за допомогою сценаріїв.

Сценарна парадигма припускає розбиття задачі на окремі частини, кожна з яких розв'язується спеціалізованими програмними засобами, а сценарій виступає в ролі «диспетчера», відповідального за організацію їхньої взаємодії.

Сценарні мови для web-розробки створені в 90-і роки XX століття і включають елементи різних парадигм програмування від імперативної до об'єктно-орієнтованої. Серед найбільш популярних сценарних систем можна відзначити: Perl, PHP, ASP, VBScript, JavaScript, Pyton. Синтаксис і семантика різних сценарних мов схожі. Це обумовлено значним впливом мов С і С++ на програмістів.

Крім Web-застосунків сценарні мови використовуються для настройки і розширення різних прикладних програмних продуктів (наприклад, OPIMA-Workflow), для запису сценаріїв тестування в інструментальних засобах тестування тощо.

Основна принципова відміна сценарних мов від компілюючих полягає в тому, що в них відсутній виконуваний код (.exe- файл). Кожна команда сценарію інтерпретується і одразу виконується.

Питання

1. Які мови сценаріїв вам відомі?

2. У чому відміна сценарної парадигми програмування від імперативної?

3. Які основні ознаки сценарної парадигми програмування та основні мови?



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 228; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.106.114 (0.006 с.)