DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

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

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи № 3: Реалізація ієрархії в мові С++. Просте успадкування

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра систем автоматизованого проектування

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Методи та засоби об'єктно-орієнтованого проектування
Група:
КН-11
Коротко про документ

Про що ця робота

У звіті досліджено реалізацію ієрархії класів за допомогою механізму простого успадкування в мові С++. Наведено теоретичні відомості про специфікатори доступу та результати виконання практичного завдання.

У роботі розглядаються

  • Об'єктно-орієнтоване програмування
  • Мова програмування C++
  • Успадкування класів
  • Специфікатори доступу
  • Базові та похідні класи
  • Ієрархія класів
  • Індивідуальне завдання

Зміст і розділи

  1. Мета роботи
  2. Теоретична частина
  3. Індивідуальне завдання
  4. Текст програми
  5. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, що вивчають об'єктно-орієнтоване програмування.
Викладачі:Каркульовський В.І.

Ключові поняття

успадкуваннябазовий класпохідний класprivatepublicprotectedієрархія класівінші члени класуіндивідуальне завданняC++

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ Національний університет “Львівська політехніка” Кафедра САПР ЗВІТ до лабораторноі работи № 3 Реалізація ієрархії в мові С++. Просте успадкування. з курсу " Методи та засоби об’єктно-орієнтованого проектування " 1. МЕТА РОБОТИ Метою даної роботи є ознайомлення з реалізацією ієрархії класів в мові програмування С++ на основі простого успадкування. 2. ТЕОРЕТИЧНА ЧАСТИНА Фундаментальна концепція об’єктно-орієнтованого програмування і проектування полягає в тому, що програма інтерпретується як модель деяких аспектів навколишньої дійсності. Класи в програмі представляють собою основні поняття з прикладної області, а об’єкти цих класів відіграють роль об’єктів реального світу. Існує наступна структура взаємовідносин між класами в програмі: відношення успадкування, відношення включення, відношення використання. Відношення успадкування поділяється на просте та множинне. Дана робота присвячена простому успадкуванню. Для того, щоб відобразити ієрархічні зв’язки, які виражають спільність між класами, водять поняття похідного класу і зв’язані з ним механізми мови. Похідний клас спадкує властивості базового класу. Ці відношення графічно зображають стрілкою, яка направлена від похідного класу до базового. Загальна форма для похідного класу: class derrivedclass-name : access baseclass-name { private: //... protected: //... private: //... }; Access мусить бути private, protected та public. По замовчуванню приймається private доступ.Член класу може бути закритим (private), захищеним (protected) або відкритим (public): ім’я закритого члену класу може бути використано тільки функціями-членами і друзями цього класу. Похідний клас не може доступитись до цієї частини класу: ім’я захищеного члена класу може бути використано тільки функціями-членами і друзями цього класу, а також функціями-членами і друзями класів, похідних від нього: ім’я відкритого члену класу може використовувати будь-яка функція Об’єкт може доступитися тільки до public-частини класу. Розглянемо наступну ієрархію класів: На рис.1 зображено ієрархію класів при простому успадкуванні і вказано елементи, до яких є прямий доступ (di - поля даних, mi - методи). Коли необхідно забезпечити доступ до закритої частини базового класу Х через об’єкти цього ж класу, то необхідно визначити функцію доступу у відкритій частині опису класу: //Додати в public-частину класу Х: return-type privateAccessFunction (type aVatue) { m1(); d1 = aValue; } //Додати у функцію main: //Тепер об’єкт аХ може отримати доступ //до закритої частини свого базового класу аХ.privateAccessFunction (newValue); Об’єкт public-похідного класу не має доступ до закритої частини базового класу. Якщо в класі Х визначити відкриту функцію для доступу до закритих полів через об’єкти класів, як описано вище, то ця функція успадковуватиметься public-похідним класом Y1 і може використовуватись об’єктами цього класу: aY1.privateAccessFunction (newValue); Об’єкти private і protected-похідних класів не мають доступу до ніякої частини свого базового класу. Якщо ж необхідно забезпечити такий доступ, то це здійснюється шляхом перезавантаження функції: //Додати privateAccessFunction в Х //У відкритій частині класу У2 (У3): return-type privateAccessFunction (type aValue {Х:: privateAccessFunction (aValue); } //Доступ тоді здійснюється: аУ2.privateAccessFunction (newValue); аУ3.privateAccessFunction (newValue); Останні приклади показують, як можна обійти ситуацію, коли немає прямого доступу. Але все ж таки такі речі реалізовувати без зайвої потреби не варто. Індивідуальне завдання: Для класу "INTEGER", описати два класи (public - і private - похідний). Шляхом тестування показати всі можливі механизми доступу через закриті, захищені і відкриті частини з об’єктів цих похідних класів. Текст програми: // muroslav_lab3.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<iostream> #include<stdlib.h> using namespace std; class INTEGER { private: short value; public: // Конструктори і деструктори INTEGER() {} INTEGER(int anlnt) { value = anlnt; } ~INTEGER() {} //Mетоди доступа short getValue() { return value; } void setVlue(int aValue) { value = aValue; } // Методи порівняння friend int operator==(const INTEGER& anlnt1, const INTEGER& anlnt2) { return anlnt1.value == anlnt2.value; } friend int operator>(const INTEGER& anlnt1, const INTEGER& anlnt2) { return anlnt1.value > anlnt2.value; } friend int operator<(const INTEGER& anlnt1, const INTEGER& anlnt2) { return anlnt1.value < anlnt2.value; } //Арифметичні методи friend INTEGER operator+(const INTEGER& anlnt1, const INTEGER& anlnt2) { return INTEGER(anlnt1.value + anlnt2.value); } friend INTEGER operator-(const INTEGER& anlnt1, const INTEGER& anlnt2) { return(anlnt1.value - anlnt2.value); } friend short operator*(const INTEGER& anlnt1, const INTEGER& anlnt2) { return(anlnt1.value * anlnt2.value); } friend INTEGER operator/(const INTEGER& anlnt1, const INTEGER& anlnt2) { if(anlnt2.value == 0) { cout << "Divide by zero.Stop"; exit(1); } return(anlnt1.value / anlnt2.value); } //Методи друку friend ostream& operator<<(ostream& stream, const INTEGER& anlnt) { stream << anlnt.value; return stream; } }; class Y1: private INTEGER { private: friend class Y2; public: Y1():INTEGER(){} Y1(short val):INTEGER(val){} ~Y1(){} short getValue(){return INTEGER::getValue();} }; class Y2: public INTEGER { private: friend class Y1; public: Y2():INTEGER(){} Y2(short val):INTEGER(val){} ~Y2(){} }; void main() { INTEGER one,two(200),three; int a,b; Y1 a1(100),a5(999),a6(99); Y2 a2,a3,a4; //INTEGER cin>>a; one.setVlue(a); cout<<"1: "<<one.getValue()<<endl; //Y2->INTEGER cin>>b; a2.setVlue(b); cout<<"2: "<<a2.getValue()<<endl; //Y1 private cout<<"3: "<<a1.getValue()<<endl; //Y2->INTEGER value a3.setVlue(two.getValue()); cout<<"4: "<<a3.getValue()<<endl; //Y2->Y1 a4.setVlue(a5.getValue()); cout<<"5: "<<a4.getValue()<<endl; //INTEGER->Y1 three.setVlue(a6.getValue()); cout<<"6: "<<three.getValue()<<endl; }  Висновок: На даній лабораторній роботі вивчив просте успадкування та його особливості, при використанні різних способів успадкування за допомогою ключових слів private, public.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!