Добавил:
Допоможу чим зможу) Відсигнальте якщо знайшли шось корисне) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
84
Добавлен:
10.03.2018
Размер:
1.12 Mб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”

ОСНОВНІ ПРИНЦИПИ ОБ’ЄКТНО-ОРІЄНТОВАНОГО

ПРОГРАМУВАННЯ. КЛАСИ, ЧЛЕНИ КЛАСУ, ЕКЗЕМПЛЯРИ

КЛАСУ. РОЗРОБКА КОНСОЛЬНИХ ЗАСТОСУВАНЬ

ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 5

З КУРСІВ «ТЕХНОЛОГІЇ ПРОГРАМУВАННЯ Ч. 2»

для студентів спеціальності 125 «Кібербезпека»

Львів – 2017

Основні принципи об’єктно-орієнтованого програмування. Класи, члени класу, екземпляри класу. Розробка консольних застосувань: інструкція до лабораторної роботи №5 з курсів «Технології програмування част.2» для студентів спеціальності 125 «Кібербезпека». / Укл.: В.І. Отенко, А.І. Партика - Львів: НУЛП, 2017.- 16 с.

Укладачі: В.І. Отенко, к.т.н., доцент,

А.І. Партика, к.т.н., асистент.

2

Мета роботи – вивчити базові принципи об’єктно-орієнтованого програмування на прикладі алгоритмічної мови C#. Навчитися складати та відлагоджувати прості розрахункові програми лінійної структури.

1. ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ

Головне в мові С# – реалізація принципів об’єктно-орієнтованого програмування (ООП). Об’єктно-орієнтовна методика невіддільна від С# і всі С#-програми в якійсь мірі мають об’єктну орієнтацію. Тому, перш ніж приступати до написання навіть простої С#-програми, необхідно зрозуміти основні принципи ООП.

Для підтримки принципів об’єктно-орієнтованого програмування всі ООП–мови, включаючи С#, мають три характерні риси: інкапсуляцію,

поліморфізм і наслідування.

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

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

Основною одиницею інкапсуляції в С# є клас. Клас визначає форму об’єкта. Він задає як дані, так і код, який буде керувати цими даними. В С# клас використовується для створення об’єктів. Об’єкти – це екземпляри класу. Таким чином, клас – це по суті набір шаблонних елементів, які показують, як побудувати об’єкт.

Коди і дані, які складають клас, називаються членами класу. Дані, визначені в класі називаються змінними екземплярами (instance variable), а код, який оперує цими даними, – методами-членами (member method), або просто методами. «Метод» - це термін, який використовується в С# для позначення підпрограм. Якщо ви знайомі з мовою С або С++, то, можливо, здогадуєтеся про те, що те , що С# – програміст називає методом, С/С++ – програміст називає функцією. А оскільки С# – прямий нащадок С++, термін «функція», також прийнято використовувати, коли мова йде про C#-методи.

Поліморфізм – це властивість яка дозволяє одному інтерфейсу отримувати доступ до цілого класу дій. Розглянемо, наприклад, стек, тобто

3

область пам’яті, яка функціонує за принципом “останній прийшов – першим буде обслужений”. Припустимо що випишете програму, для якої необхідно організувати три різних стека. Один стек призначений для цілочисельних значень, другий для значень з плаваючою комою, а третій для символів. В цьому випадку для реалізації кожного стеку використовується один і той самий алгоритм, не дивлячись на різницю в типах даних що зберігаються. Тобто завдяки поліморфізму в середовищі С# можна створювати один спільний набір “стекових” підпрограм, який обробляє всі три типи стеку.

Концепцію поліморфізму часто виражають такою фразою “один інтерфейс – багато методів”. Це означає, що для виконання групи подібних дій можна розробити спільний інтерфейс.

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

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

Ідентифікатори

В С# ідентифікатор являє собою ім'я, яке присвоєне методу, змінній чи іншому елементу, визначеному користувачем. Ідентифікатори можуть складатися з одного або декількох символів. Імена мінних повинні починатися з букви або символу підкреслення. Наступним символом може бути буква, цифра і символ підкреслення. Символ підкреслення можна використовувати для покращення читабельності іменні змінної, наприклад max_a. В С# малі та великі букви сприймаються як різні символи. Варто особливо пам’ятати, що ідентифікатор не повинен починатися з цифри. В якості ідентифікаторів не можна використовувати ключові слова мови С# (в мові С# є 77 зарезервованих ключових слів).

Коментарі

Довільний рядок програми, який починається з символів // або /// – є звичайним текстом, призначеним для людини і повністю ігнорується С#. // та ///

розглядаються як еквіваленті символи початку коментарю.

Константи

Додавання перед змінною ключового слова const при її оголошенні та ініціалізації помічає її як константу. Таким чином константа – це змінна значення якої не може бути змінено протягом всього часу тривалості її життя.

const int a=100 //ця величина не може змінюватися.

4

Типи даних

Типи даних в С# мають особливе значення, оскільки С# строго типізована мова. Це означає, що всі операції перевіряються компілятором на відповідність типів. Некоректні операції не компілюються. Крім того, тип значення визначає, які операції дозволяється виконувати з таким значенням.

В С# строго визначається діапазон та поведінка кожного типа значень.

Типи значень в С# наведені в табл.1

 

 

 

 

 

Таблиця 1

 

Ключове слово

 

 

Тип

 

bool

 

Логічний, або булевий, надає значення істина/хибність

 

byte

 

8-ми розрядний цілочисельний без знака

 

char

 

Символьний

 

 

decimal

 

Числовий тип для фінансових обчислень

 

double

 

З плаваючою точкою подвійної точності

 

float

 

З плаваючою точкою

 

int

 

Цілочисельний

 

long

 

Тип для представлення довгого цілого числа

 

sbyte

 

8-ми розрядний цілочисельний зі знаком

 

short

 

Тип для представлення короткого цілого числа

 

uint

 

Цілочисельний без знака

 

ulong

 

Тип для представлення довгого цілого числа без знаку

 

ushort

 

Тип для представлення короткого цілого числа без знаку

 

Характеристики цілочисельних типів наведені в табл.2:

 

 

 

 

 

Таблиця 2

 

Тип

Розмір в байтах

 

Діапазон значень

 

byte

8

 

0 – 255

 

sbyte

8

 

-128 – 127

 

short

16

 

-32768 – 326767

 

ushort

16

 

0 – 65535

 

int

32

 

-2 147 483 648 – 2 147 483 647

 

uint

32

 

0 – 4 294 967 295

 

long

64

 

-9 223 372 036 854 775 808

 

 

 

 

 

– 9 223 372 036 854 775 807

 

ulong

64

 

0 – 18 446 744 073 709 551 615

 

Характеристики типів з плаваючою комою наведені в табл.3:

 

 

 

 

 

Таблиця 3

 

Тип

Розмір в байтах

 

Діапазон значень

 

double

8

 

Від 1.5*10-45 до 3.4*1038

 

float

16

 

Від 5*10-324 до 1.7*10308

5

Керуючі послідовності символів наведені в табл.4.

 

Таблиця 4

ESC-послідовність

Опис

\a

Звуковий сигнал (дзвінок)

\b

Повернення на одну позицію

\f

Подача сторінки (для переходу на іншу сторінку)

\n

Нова сторінка

\r

Повернення каретки

\t

Горизонтальна табуляція

\v

Вертикальна табуляція

\0

Нуль символ

\’

Одинарні лапки (апостроф)

\”

Подвійні лапки

\\

Зворотна коса риска

Арифметичні оператори

Арифметичні оператори мори С# наведені в табл.5:

 

Таблиця 5

ОПЕРАТОР

ДІЯ

+

Додавання

-

Віднімання, унарний мінус

*

Множення

/

Ділення

%

Ділення за модулем

--

Декремент

++

інкремент

Дія в С# операторів +,-,* та / співпадає з дією аналогічних операторів в будь-якій іншій мові програмування. Їх можна використовувати для довільних даних числового типу.

Оператори відношення та логічні оператори

Оператори відношення наведені в табл. 6:

Таблиця 6

ОПЕРАТОР

ЗНАЧЕННЯ

==

Рівне

!=

Не рівне

>

Більше

<

Менше

>=

Більше або рівне

<=

Менше або рівне

6

Логічні оператори наведені в табл.7:

Таблиця 7

ОПЕРАТОР

ЗНАЧЕННЯ

&

І

|

АБО

^

Виключне І

&&

Скорочене І

||

Скорочене АБО

!

НІ

Результат виконання операторів відношення та логічних операторів має тип boolean.

Оператор присвоєння:

Оператор присвоєння позначається одинарним знаком рівності (=). Загальна форма запису оператора присвоєння має наступний вигляд:

Змінна = вираз;

Тип елемента змінна повинен бути співставним з типом елемента вираз.

Пріоритет операторів

В таблиці 8 показано порядок дій операторів в мові С#. оператори у верхній частині таблиці мають найвищий пріоритет (тобто у виразах, які містять декілька операторів, вони обчислюються першими)

Таблиця 8

Група

 

 

 

 

Оператори

Унарні

+

!

~

 

Множення/ділення

*

/

%

 

 

Додавання/віднімання

+

-

 

 

 

Операції побітового зсуву

<<

 

>>

 

 

Відношення

<

>

<=

>=

Порівняння

==

 

!=

 

 

Побітовий AND

&

 

 

 

 

Побітовий XOR

|

 

 

 

 

Побітовий OR

^

 

 

 

 

Логічний AND

&&

 

 

 

Логічний OR

||

 

 

 

 

Присвоєння

=

+=

-=

*= /= %= і т.д.

Модифікатори доступу.

До визначення змінної можна додавати модифікатори, які служать для вказування додаткових параметрів змінної. Існують наступні модифікатори доступу: internal, private, protected і public. В оголошенні змінної може вказуватися лише один з цих модифікаторів, за виключенням спільного використання модифікаторів protected та internal. Таким чином існує п’ять можливих рівнів доступу, описані в табл.9:

7

 

Таблиця 9

Рівень доступу

Опис

public

Члени доступні з будь-якого місця програми

internal

Члени доступні з будь-якого класу в тому ж модулі

 

програми

protected

Члени доступні лише з поточного класу і всіх його

 

підкласів.

protected internal

Члени доступні для поточного класу і всіх його підкласів

 

в тому ж модулі програми

private

Члени доступні лише з поточного класу

Введення в класи.

Класс – це шаблон, який визначає форму об’єкта. Він захищає як дані так і код , який оперує цими даними. С# використовує специфікацію класу для створення об’єкта. Об’єкти – це екземпляри класу. Таким чином, клас – це множина намірів (планів), які визначають, як повинен бути побудований об’єкт.

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

Клас створюється за допомогою ключового слова class. Загальна форма визначення класу має наступний вигляд:

сlass ім’я класу

{

//оголошення змінних доступ тип змінна 1; доступ тип змінна 2;

//…

доступ тип змінна N;

// Оголошення методів доступ тип_повернення метод 1 (параметри)

{

//тіло методу

}

доступ тип_повернення метод 2 (параметри)

{

//тіло методу

}

//…

доступ тип_повернення метод N (параметри)

{

// тіло методу

}

}

8

Елемент доступу означає специфікатор доступу (наприклад, public), який визначає як до цього члена можна отримати доступ. Специфікатор доступу є необов’язковим, і, якщо він не вказаний, то мається на увазі, що цей член закритий (private). Закриті члени можуть лише використовуватися тільки іншими членами свого класу.

Вважається, що клас повинен визначати лише одну логічну сутність.

Створення об’єктів

Базові типи мови С# (int, char та ін.) являються розмірними та зберігаються в стеці. Об’єкти зі своєї сторони, мають тип посилання і створюються за допомогою ключового слова new:

Time t = new Time()

Тут змінна t не містить значення об’єкта Time, а містить адресу об’єкта (безіменного). Сама змінна t є лише посиланням на цей об’єкт.

Конструктори

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

Клас Math

В класі Math визначено багато стандартних математичних операцій. Деякі з методів визначених в класі Math наведені в наступній табл.10:

Таблиця 10

Метод

Опис

Abs (x)

Повертає абсолютне значення x

Acos (x)

Повертає арккосинус x

Asinx (x)

Повертає арксинус x

Atan (x)

Повертає арктангенс x

Log (x)

Повертає натуральний логарифм х

Log (x,y)

Повертає логарифм для параметра х за основою у

Log10 (х)

Повертає логарифм для параметра х за основою 10

Max (x,y)

Повертає більше з значень x, y

Min (x,y)

Повертає менше з значень х, у

Pow (x,y)

Повертає значення х піднесене до степеня у

Round (x)

Повертає значення х округлене до найближчого цілого числа

Sin (x)

Повертає синус параметра х

Sinh (x)

Повертає гіперболічний синус параметра х

Tan (x)

Повертає тангенс параметра х

Tanh (x)

Повертає гіперболічний тангенс параметра х

9

2. ПОЧАТОК РОБОТИ В СЕРЕДОВИЩІ С#

Запуск Visual Studio 2005. Для запуску Visual Studio 2005 виберіть команду меню ПУСК→ПРОГРАМИ→Microsft Visual C# 2005 Express

Edition, або запустіть з робочого стола за допомогою ярлика, як показано на рис.1.

Рис.1. Запуск Microsft Visual C# 2005 Express Edition з меню ПУСК і за допомогою ярлика.

Створення консольної програми. Виберіть в меню команду

File→New→Project, Visual Studio відкриє діалогове вікно як показано на рис.2.

Рис.2. Діалогове вікно створення нового проекту.

В панелі Templates виберіть піктограму Console Application, в рядку Name введіть назву свого проекту. Завантажиться шаблон програми, який можна буде редагувати для конкретних завдань. По замовчуванню ім’я консольної програми має назву ConsoleApplication1.

10

Соседние файлы в папке Лаби (умови)