Иерархия классов. Наследование. Принцип подстановки

Механизмы простого открытого наследования и виртуальных функций, принцип подстановки. Разработка приложения, состоящего из нескольких файлов в системе программирования Visual Studio. Создание иерархии классов с использованием простого наследования.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 11.01.2021
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

Пермский национальный исследовательский политехнический университет (ПНИПУ)

Факультет: Электротехнический (ЭТФ)

Направление: 09.03.01 - Информатика и вычислительная техника (ИВТ)

Профиль: Автоматизированные системы обработки информации и управления (АСУб)

Кафедра информационных технологий и автоматизированных систем (ИТАС)

ОТЧЕТ

о лабораторной работе

по основам алгоритмизации и программирования

на тему «Иерархия классов. Наследование. Принцип подстановки»

Студент: Петров Алексей Михайлович

Пермь -- 2020

Содержание работы

1. Цель работы. Постановка задачи. Перечень используемых программ

2. Краткие теоретические сведения

3. Ход работы

4. Ответы на контрольные вопросы

Выводы по работе

Список литературы

1. Цель работы. Постановка задачи. Перечень используемых программ

Цели работы:

- Создание консольного приложения, состоящего из нескольких файлов в системе программирования Visual Studio;

- Создание иерархии классов с использованием простого наследования;

- Изучение принципа подстановки;

- Научиться правильно составлять иерархию структур данных на языке программирования Си++;

- Научиться составлять программы в среде Visual Studio с применением новых методов объектно-ориентированного программирования.

Постановка задачи:

- Определить пользовательский класс.

- Определить в классе следующие конструкторы: без параметров, с параметрами, копирования.

- Определить в классе деструктор.

- Определить в классе компоненты-функции для просмотра и установки полей данных (селекторы и модификаторы).

- Перегрузить операцию присваивания.

- Перегрузить операции ввода и вывода объектов с помощью потоков.

- Определить производный класс.

- Написать программу, в которой продемонстрировать создание объектов и работу всех перегруженных операций.

- Реализовать функции, получающие и возвращающие объект базового класса. Продемонстрировать принцип подстановки.

Перечень используемых программ:

- Основная программа для написания программного кода на языке Си++ Microsoft Visual Studio 2019 Community Edition;

- Программы для работы с текстом Notepad++ и Microsoft Office 2013 Professional Edition;

- Программа диктовки Voco 2010;

- Редакторы изображений Picasa 3.0 и Microsoft Paint.NET;

- Программа автоматического составления блок-схем программного кода Flowchart.

2. Краткие теоретические сведения

Простое открытое наследование

Наследование - это механизм получения нового класса на основе уже существующего. Существующий класс может быть дополнен или изменен для создания нового класса.

Существующие классы называются базовыми, а новые - производными. Производный класс наследует описание базового класса; затем он может быть изменен добавлением новых членов, изменением существующих функций-членов и изменением прав доступа. С помощью наследования может быть создана иерархия классов, которые совместно используют код и интерфейсы.

Наследуемые компоненты не перемещаются в производный класс, а остаются в базовых классах.

В иерархии производный объект наследует разрешенные для наследования компоненты всех базовых объектов (public, protected).

Допускается множественное наследование - возможность для некоторого класса наследовать компоненты нескольких никак не связанных между собой базовых классов. В иерархии классов соглашение относительно доступности компонентов класса следующее: private - член класса может использоваться только функциями - членами данного

класса и функциями - “друзьями” своего класса. В производном классе он недоступен. protected - то же, что и private, но дополнительно член класса с данным атрибутом

доступа может использоваться функциями-членами и функциями - “друзьями” классов, производных от данного.

public - член класса может использоваться любой функцией, которая является членом данного или производного класса, а также к public - членам возможен доступ извне через имя объекта.

Следует иметь в виду, что объявление friend не является атрибутом доступа и не наследуется.

Синтаксис определения производного класса:

class имя_класса : список_базовых_классов {список_компонентов_класса};

Конструкторы и деструкторы при наследовании

Поскольку конструкторы не наследуются, при создании производного класса наследуемые им данные-члены должны инициализироваться конструктором базового класса. Конструктор базового класса вызывается автоматически и выполняется до конструктора производного класса. Параметры конструктора базового класса указываются в определении конструктора производного класса. Таким образом, происходит передача аргументов от конструктора производного класса конструктору базового класса.

//базовый класс class Base

{

protected: int a,b;

public:

Base(int x,int y){a=x;b=y;}

}; //производный класс

class Derive:public Base

{

protected: int sum;

public:

Derive (int x,int y, int s):Base(x,y){sum=s;}

};

Объекты класса конструируются сверху вниз: сначала базовый, потом компоненты-объекты (если они имеются), а потом сам производный класс. Таким образом, объект базового класса содержит в качестве подобъекта объект производного класса.

Уничтожаются объекты в обратном порядке: сначала производный, потом его компоненты-объекты, а потом базовый объект.

Таким образом, порядок уничтожения объекта противоположен по отношению к порядку его конструирования.

Виртуальные функции

К механизму виртуальных функций обращаются в тех случаях, когда в каждом производном классе требуется свой вариант некоторой компонентной функции. Классы, включающие такие функции, называются полиморфными и играют особую роль в ООП.

Виртуальные функции предоставляют механизм позднего (отложенного) или динамического связывания. Любая нестатическая функция базового класса может быть сделана виртуальной, для чего используется ключевое слово virtual.

class Base

{

public:

virtual void print(){cout<<”\nBase”;}

. . .

};

class Derive : public Base

{

public:

void print(){cout<<”\n Derive”;}

};

void main()

{

Base B,*bp; Derive D,*dp; bp=&B; dp=&D;

//указатель базового класса ставится на объект //производного класса

Base *p = &D;

bp ->print(); // вызывается метод для Base

dp ->print(); // вызывается метод для Derive p ->print(); // вызывается метод для Derive

}

Таким образом, интерпретация каждого вызова виртуальной функции через указатель на базовый класс зависит от значения этого указателя, т.е. от типа объекта, для которого выполняется вызов.

Выбор того, какую виртуальную функцию вызвать, будет зависеть от типа объекта, на который фактически (в момент выполнения программы) направлен указатель, а не от типа указателя.

Виртуальными могут быть только нестатические функции-члены.

Виртуальность наследуется. После того как функция определена как виртуальная, ее повторное определение в производном классе (с тем же самым прототипом) создает в этом классе новую виртуальную функцию, причем спецификатор virtual может не использоваться.

Конструкторы не могут быть виртуальными, в отличие от деструкторов. Практически каждый класс, имеющий виртуальную функцию, должен иметь виртуальный деструктор.

Принцип подстановки

Открытое наследование устанавливает между классами отношение «является»: класс-наследник является частью класса-родителя. Это означает, что везде, где может быть использован объект базового класса (при присваивании, при передаче параметров и возврате результата), вместо него разрешается использовать объект производного класса. Данное положение называется принципом подстановки. Он работает и для ссылок и для указателей. Обратное неверно. Например, всякий спортсмен (производный класс) является человеком (базовый класс), но не всякий человек является спортсменом.

Закрытое наследование - это наследование реализации, в этом случае принцип подстановки не соблюдается.

class Base

{

public: void f1(); void f2(); };

class Derive: private Base //закрытое наследование {……};

Программа, использующая класс Derive не может использовать ни f1() ни f2(). В наследнике заново реализуются все методы:

class Derive: private Base

{

public:

void f1(){Base::f1();}; void f2(){Base::f2();}; };

3. Ход работы

1 В среде программирования приложения Microsoft Visual Studio создать в проекте класс Pair следующим образом:

1.1 В начальном окне выбрать пункты - Create/Empty Project.

1.2 Добавить в проект класс Pair, для чего вызвать контекстное меню проекта, выбрать в нем пункт Add/Class (добавить/класс) , в диалоговом окне Add class (добавление класса) выбрать категорию C++, шаблон С++ Class, нажать кнопку Add (добавить).

1.3 В диалоговом окне Generic C++ Class Wizard (свойства класса) ввести имя класса (Class Name) Pair. В результате будут сформированы 2 файла: Pair.h, Pair.cpp. В файле Pair.h будет сформирована заготовка для класса:

class Pair

{

public:

Pair (void);

public:

~Pair (void);

};

1.4 Ввести следующий текст программы в файлe Pair.h

//описание класса

#pragma once

#include <iostream>

using namespace std;

class Pair

{

//конструктор без параметров

public:

Pair(void);

public:

//деструктор

virtual ~Pair(void);

//констрктор с параметрами

Pair(int, int);

//конструктор копирования

Pair(const Pair&);

//селекторы

int Get_fir() { return first; }

int Get_sec() { return second; }

//модификаторы

void Set_fir(int);

void Set_sec(int);

int get_aria();// произведение

//перегрузка операции присваивания

Pair& operator=(const Pair&);

//глобальные операторы-функции ввода-вывода

friend istream& operator>>(istream& in, Pair& p);

friend ostream& operator<<(ostream& out, const Pair& p);

//атрибуты

protected:

int first;

int second;

};

1.5 В файле Pair.cpp будет сформирована заготовка файла:

#include "Pair.h"

Pair:: Pair (void)

{

}

Pair::~ Pair (void)

{

}

1.6 Добавить в файле Pair.cpp следющий текст программы:

#include "Pair.h"

//конструктор без параметров

Pair::Pair(void)

{

first=0;

second=0;

}

//деструктор

Pair::~Pair(void){}

//конструктор с параметрами

Pair::Pair(int F,int S)

{

first=F;

second=S;

}

//конструктор копирования

Pair::Pair(const Pair& Pair)

{

first = Pair.first;

second = Pair.second;

}

//модификаторы

void Pair::Set_fir(int F)

{

first=F;

}

void Pair::Set_sec(int S)

{

second=S;

}

int Pair::get_aria()//произведение

{

return first * second;

}

//перегрузка операции присваивания

Pair& Pair::operator=(const Pair&p)

{

if(&p==this)return *this;

first=p.first;

second=p.second;

return *this;

}

//глобальная функция для ввода

istream& operator>>(istream&in, Pair&p)

{

cout<<"\nВведите длину первой стороны прямоугольника: ";

in>>p.first;

cout<<"Введите длину второй стороны прямоугольника: ";

in>>p.second;

cout << endl;

return in;

}

//глобальная функция для вывода

ostream& operator<<(ostream&out,const Pair&p)

{

out<<"\nПервая сторона прямоугольника: "<<p.first;

out << "\nВторая сторона прямоугольника: " << p.second << endl;

return out;

}

2 Добавить в проект файл Lab3_main.cpp и основную программу, в которой необходимо проверить работу методов класса Pair:

int main()

{

system("chcp 1251");

setlocale(LC_ALL, "rus");

cout << "\n**Лабораторная работа №3 - Наследование.Принцип подстановки**\n";

cout << "\n**Работа с базовым классом Pair**\n";

Pair a;

cout << "\n**Работа операторов ввода-вывода**";

cin >> a;

cout << a;

cout << "\nПроизведение чисел равно: " << a.get_aria() << endl;

cout << "\n**Работа конструктора с параметрами 40 и 115**\n";

Pair b(40, 115);

cout << b;

cout << "\n**Работа конструктора копирования**\n";

a = b;

cout << a;

system("pause");

return 0;

}

3 Выполнить компиляцию программы, используя команду Build / Build Solution (сборка/сборка решения) или функциональную клавишу F7. Исправить имеющиеся синтаксические ошибки и снова запустить программу на компиляцию.

4 Запустить программу на выполнение, используя команду Debug/ Start Without Debugging (отладка/запуск без отладки) или комбинацию функциональных клавиш Ctrl+F5.

5 В открывшемся окне консоли Windows ввести в ответ на запросы программы соответствующие данные и проверить результаты выполнения программы. На рисунке 1 показан скриншот выполнения проверяемой программы.

Рис 1 - Скриншот выполнения основной программы, содержащей класс Pair

6 Добавить в проект класс Rectangle (Прямоугольник). Для этого необходимо:

6.1 Вызвать контекстное меню проекта, выбрать в нем пункт Add/Class, в диалоговом окне Add class выбрать категорию C++, шаблон С++ Class, нажать кнопку Add.

6.2 В диалоговом окне Generic C++ Class Wizard в поле Class Name ввести имя класса Rectangle, в поле Base Class ввести имя базового класса Pair.

6.3 В результате будут сформированы 2 файла: Rectangle.h, Rectangle.cpp. В файле Rectangle.h будет сформирована заготовка для класса Rectangle:

#pragma once

#include "Pair.h"

class Rectangle : public Pair

{

public: Rectangle (void);

public: ~ Rectangle (void);

};

6.4 Добавить следующий текст в файл Rectangle.h:

#pragma once

#include "Pair.h"

//класс Rectangle наследуется от класса Pair

class Rectangle : public Pair

{

public:

Rectangle(void);//конструктор без параметров

public:

~Rectangle(void);//деструктор

Rectangle(int,int);//конструктор с параметрами

Rectangle(const Rectangle&);//конструктор копирования

int Get_area(){return area;}//селектор

void Set_area(int,int);//модификатор

int Get_per() { return per; }//селектор

void Set_per(int,int);//модификатор

Rectangle& operator=(const Rectangle&);//операция присваивания

friend istream& operator>>(istream& in, Rectangle& r);//операция ввода

friend ostream& operator<<(ostream& out,const Rectangle& r); //операция вывода

protected:

int area;//площадь

int per;//периметр

};

6.5 Добавить следующий текст в файл Rectangle.cpp:

#include <iostream>

#include "Rectangle.h"

using namespace std;

//конструктор без параметров

Rectangle::Rectangle(void) : Pair()

{

area = 0;

per = 0;

}

//дестрктор

Rectangle::~Rectangle(void){}

//конструктор с параметрами

Rectangle::Rectangle(int F, int S) : Pair(F, S)

{

area = F * S;

per = 2 * (S + F);

}

//конструктор копирования

Rectangle::Rectangle(const Rectangle& r)

{

first = r.first;

second = r.second;

area = r.first * r.second;

per = 2 * (r.first + r.second);

}

//модификаторы

void Rectangle::Set_area(int F, int S)

{

first = F;

second = S;

area = F * S;

}

void Rectangle::Set_per(int F, int S)

{

first = F;

second = S;

per = 2 * (F + S);

}

//оперция присваивания

Rectangle& Rectangle::operator=(const Rectangle& r)

{

if (&r == this)return *this;

first = r.first;

second = r.second;

area = r.area;

per = r.per;

return *this;

}

//операция ввода

istream& operator>>(istream& in, Rectangle& r)

{

cout << "\nВведите длину первой стороны прямоугольника: ";

in >> r.first;

cout << "Введите длину второй стороны прямоугольника: ";

in >> r.second;

r.area = r.first * r.second;

r.per = (r.first + r.second) * 2;

return in;

}

//операция вывода

ostream& operator<<(ostream& out, const Rectangle& r)

{

out << "\nПлощадь прямоугольника со сторонами " << r.first << " и " << r.second << " равна " << r.area;

out << "\nПериметр прямоугольника со сторонами " << r.first << " и " << r.second << " равен " << r.per << endl;

return out;

}

7. Проверить работу класса Rectangle. Для этого добавить в файл Lab3_main.cpp следующие операторы:

cout << "\n**Работа с производным классом Rectangle**\n";

Rectangle c;//создать объект

cout << "\n**Работа операторов ввода-вывода**\n";

cin>>c;//ввести значения атрибутов

cout<<c;//вывести значения атрибутов

cout << "\n**Работа оператора присваивания**\n";

Rectangle d;

d = c;

cout << d;

8. Выполнить компиляцию программы и запустить ее на выполнение. На рисунке 2 показан скриншот выполняемой части программы.

Рис 2 - Скриншот работы программы с производным классом Rectangle

9 Реализовать функции, получающие и возвращающие объект базового класса. Для этого в файл Lab3_main.cpp добавить текст с описанием следующих глобальных функций:

// глобальные функции

void f1(Pair&e)//функция принимает объект базового класса как параметр

{

e.Set_fir(12);

e.Set_sec(8);

cout << e;

}

Pair f2()// функция передает объект в базовый класс

{

Rectangle r(10,25);

return r;

}

10 Далее в функцию main() добавить следующие операторы:

//принцип подстановки

cout << "\n**Принцип подстановки**\n";

cout << "\n**Передача объектов производного класса (числа 12 и 8) во внешнюю функцию**\n";

f1(c);// передаем объект класса Rectangle

a=f2();// создаем в функции объект класса Rectangle

cout << "\n**Передача объектов (числа 10 и 25) производного класса в базовый** \n";

cout << a << endl;

В результате файл Lab4_main.cpp будет иметь следующий вид:

#include <iostream>

#include "Pair.h"

#include "Rectangle.h"

using namespace std;

// глобальные функции

void f1(Pair&e)//функция принимает объект базового класса как параметр

{

e.Set_fir(12);

e.Set_sec(8);

cout << e;

}

Pair f2()

{

Rectangle r(10,25);

return r;

}

int main()

{

system("chcp 1251");

setlocale(LC_ALL, "rus");

cout << "\n**Лабораторная работа №3 - Наследование.Принцип подстановки**\n";

cout << "\n**Работа с базовым классом Pair**\n";

Pair a;

cout << "\n**Работа операторов ввода-вывода**";

cin >> a;

cout << a;

cout << "\nПроизведение чисел равно: " << a.get_aria() << endl;

cout << "\n**Работа конструктора с параметрами 40 и 115**\n";

Pair b(40, 115);

cout << b;

cout << "\n**Работа конструктора копирования**\n";

a = b;

cout << a;

cout << "\n**Работа с производным классом Rectangle**\n";

Rectangle c;//создать объект

cout << "\n**Работа операторов ввода-вывода**\n";

cin>>c;//ввести значения атрибутов

cout<<c;//вывести значения атрибутов

cout << "\n**Работа оператора присваивания**\n";

Rectangle d;

d = c;

cout << d;

//принцип подстановки

cout << "\n**Принцип подстановки**\n";

cout << "\n**Передача объектов производного класса (числа 12 и 8) во внешнюю функцию**\n";

f1(c);// передаем объект класса Rectangle

a=f2();// создаем в функции объект класса Rectangle

cout << "\n**Передача объектов (числа 10 и 25) производного класса в базовый** \n";

cout << a << endl;

system("pause");

return 0;}

10 Далее снова откомпилировать программу и запустить ее на выполнение. На рисунке 3 показан скриншот полного цикла выполняемой программы.

11 Составить блок-схемы алгоритмов модулей программы в утилите Flowchart и отредактировать их в любом графическом редакторе для размещения в отчете.

12 Блок-схема основного модуля lab3_main.cpp и его функций показана на рисунке 4.

13 На рисунке 5 показана блок-схема класса Pair и его модулей.

14 На рисунке 6 показана блок-схема производного класса Rectangle и его модулей.

Рис 3 - Скриншот финального варианта выполняемой программы

Рис 4 - Блок-схема алгоритма модуля lab3_main.cpp

Рис 5 - Блок-схема базового класса Pair и его модулей

Рис 6 - Блок-схема производного класса Rectangle и его модулей

наследование виртуальный visual иерархия

Ответы на контрольные вопросы

1 Для чего используется механизм наследования?

- Наследование, как концепция объектно-ориентированного программирования, предназначена для осуществления возможности использовать данные и функциональность некоторой уже существующей структуры данных (базового класса) другими структурами (производными классами), входящими в ее состав.

2 Каким образом наследуются компоненты класса, описанные со спецификатором public?

- Функциональность данных со спецификатором public могут использовать любые компоненты программы, для которых они объявлены (видны).

3 Каким образом наследуются компоненты класса, описанные со спецификатором private?

- Данные со спецификатором private могут использоваться только компонентами, входящими в состав той же структуры (класса).

4 Каким образом наследуются компоненты класса, описанные со спецификатором protected?

- Данные со спецификатором protected доступны только для дружественных и производных структур (классов).

5 Каким образом описывается производный класс?

- Например, так:

//базовый класс

class Base

{

protected: int a,b;

public:

Base(int x,int y){a=x;b=y;}

};

//производный класс

class Derive:public Base

{

protected:

int sum;

public:

Derive (int x,int y, int s):Base(x,y){sum=s;}

};

6 Наследуются ли конструкторы?

7 Наследуются ли деструкторы?

- В C ++ конструкторы и деструкторы не наследуются. Однако они вызываются при инициализации объектов в дочерних классах.

8 В каком порядке конструируются объекты производных классов?

- Конструкторы вызываются один за другим иерархически, начиная с базового класса и заканчивая последним производным классом.

9 В каком порядке уничтожаются объекты производных классов?

- Деструкторы вызываются также один за другим, но в обратном порядке от последнего дочернего класса до базового.

10 Что представляют собой виртуальные функции и механизм позднего связывания?

- При позднем связывании вызываемого метода и вызывающего метода они не могут быть связаны во время компиляции. Поэтому реализован специальный механизм, определяющий связывание вызываемого и вызывающего методов, когда вызов будет сделан фактически.

Виртуальный функция - это метод, который, будучи описан в классах-потомках, замещает собой соответствующий метод везде, даже в методах, описанных для класса-предка, если он вызывается для класса-потомка. Виртуальные методы существуют для того, чтобы "наследник" вел себя отлично от "предка", сохраняя при этом свойство совместимости с ним.

Адрес виртуального метода известен только в момент выполнения программы. Когда происходит вызов виртуального метода, его адрес берется из таблицы виртуальных методов своего класса. Таким образом вызывается то, что нужно.

Преимущество применения виртуальных методов заключается в том, что при этом используется именно механизм позднего связывания, который допускает обработку объектов, тип которых неизвестен во время компиляции.

11 Могут ли быть виртуальными конструкторы? Деструкторы?

- Конструкторы не могут, а деструкторы могут.

12 Наследуется ли спецификатор virtual?

- Да, наследуется. После того как функция определена, как виртуальная, ее повторное определение в производном классе (с тем же самым прототипом) создает в этом классе новую виртуальную функцию, причем спецификатор virtual может уже не использоваться.

13 Какое отношение устанавливает между классами открытое наследование?

- Открытое наследование устанавливает между классами отношение «является», то есть класс-наследник является частью класса-родителя.

14 Какое отношение устанавливает между классами закрытое наследование?

- Производный класс в этом случае напрямую не поддерживает открытый интерфейс базового, но пользуется его реализацией, предоставляя свой собственный открытый интерфейс.

15 В чем заключается принцип подстановки?

- Открытое наследование устанавливает между классами отношение «является»: класс-наследник является частью класса-родителя. Это означает, что везде, где может быть использован объект базового класса (при присваивании, при передаче параметров и возврате результата), вместо него разрешается использовать объект производного класса.

16 Имеется иерархия классов:

class Student

{

int age;

public:

string name;

...

};

class Employee : public Student

{

protected:

string post;

...

};

class Teacher : public Employee

{

protected: int stage;

...

};

Teacher x;

Какие компонентные данные будет иметь объект х?

- Так как речь идет об открытом наследовании то класс Teacher, подобнно младшему брату, унаследует все параметры, как от «старшего брата» Employee, так и от «отца» Student. То есть - int age…, string name…, string post…, ну и, разумеется, свои собственные параметры int stage…

Выводы по работе

Эта лабораторная работа позволила приобрести весомый навык в программировании на языке Си++. Это еще один шаг на ряду с предыдущими работами к созданию программ с более сложной иерархической древовидной структурой. Что несомненно является фактом определенной перспективы на обозримое будущее. Например, эти знания уже можно применить для создания сложных многоуровневых вычислительных программ, а также в дальнейших лабораторных работах, так как в процессе обучения методам объектно-ориентированного программирования наблюдается та же иерархическая специфика наследования информации от ранних работ к последующим.

Список используемой литературы

1. Джесс Либерти, Джонс Брэдли. «Освой самостоятельно C++ за 21 день». М.: Издательский дом «Вильямс», 2010. ISBN 978-5-8459-0926-8;

2. Марк Аллен Уайс. «Организация структур данных и решение задач на C++». ЭКОНОМ Пабдишерс, 2009. ISBN 978-5-9790-0074-9;

3. Павловская Т.А. «C/C++. Программирование на языке высокого уровня». СПб: Питер, 2011. ISBN 978-5-94-723-568-5;

4. Пахомов М.В. «Методичка по объектно-ориентированному программированию на языке Си++». Уфимский Государственный Авиационный Технический Университет, 2014.

Размещено на Allbest.ru

...

Подобные документы

  • Иерархия и типы классов в программе, особенности обеспечения наследования. Наследование по принципу подчиненности. Включение в другие классы или делегирование. Понятие изолированных классов. Конструкторы и деструкторы. Иерархия классов NET Framework.

    презентация [91,8 K], добавлен 09.12.2013

  • Цели объектно-ориентированного программирования, абстрактные классы и адреса базовых классов, множественное и виртуальное наследование. Инициализация элементов производного класса, программный вызов конструкторов базового и производного классов.

    реферат [21,8 K], добавлен 31.10.2011

  • Разработка структуры класса "Экран курсового проектирования", которая будет основой для хранения информации о студентах, выполняющих курсовые работы. Реализация визуального приложения для тестирования иерархии классов на языке программирования С++.

    курсовая работа [3,3 M], добавлен 18.03.2011

  • Реализация множественного наследования в области учета транспортных средств. Принцип работы приложения в текстовой форме, его структура. Таблица свойств объектов и идентификаторов. UML-диаграмма. Описание программы на примере с представлением экранных.

    курсовая работа [557,4 K], добавлен 05.11.2016

  • Структура программы в среде Delphi в процессе проектирования приложения, ее модульный принцип. Объявление списка используемых модулей и нескольких операторов. Размещение на форме компонентов и изменение их свойств. Создание кода - обработчика события.

    лабораторная работа [19,1 K], добавлен 15.07.2009

  • Изображение класса на диаграмме UML. Инкапсуляция как средство защиты его внутренних объектов. Использование принципа полиморфизма для реализации механизма интерфейсов. Создание новых классов путем наследования. Ассоциация как вид отношений между ними.

    лекция [516,6 K], добавлен 03.12.2013

  • Иерархия основных классов MFC (базовой библиотеки классов). Структура простой MFC программы. Работа с текстом в MFC. Функции вывода текста, установки цветов, режимов отображения, получение метрик. Применение контекста устройства, обработка сообщений.

    контрольная работа [27,8 K], добавлен 11.08.2010

  • Разработка программы, проверяющей уровень знаний по разделу стереометрии и позволяющей выбор один из нескольких вариантов и ввод ответа. Характеристика библиотеки MFC, тела, классов и файлов приложения, цикла сообщений и текстовых запусков программы.

    курсовая работа [1,5 M], добавлен 28.06.2011

  • Разработка родительского компонента для дальнейшего использования при создании приложений "Editip". Иерархия классов и интерфейсов. Применение в качестве инструмента исполнения среды программирования Microsoft Visual Studio.NET. Блок-схемы алгоритмов.

    курсовая работа [1,5 M], добавлен 08.02.2011

  • Реализация абстрактных методов демонстрации иерархии классов: постановка задачи, имитирующей жизнь двух племен муравьев, создание класса-родителя "муравей", определяющего методы и свойства, которые унаследуют потомки. Программное и аппаратное обеспечение.

    курсовая работа [630,0 K], добавлен 19.03.2012

  • Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.

    презентация [184,3 K], добавлен 18.03.2014

  • Разработка программного продукта, предназначенного для тестирования знаний пользователя по теме "Тепловые двигатели" нa языкe C++ в среде Micrоsоft Visual Studio с использовaниeм библиотeки MFC. Функциональное назначение созданного Windows-приложения.

    курсовая работа [954,4 K], добавлен 25.06.2011

  • Определение программного модуля. Принципы использования dll-библиотеки. Преимущества и недостатки использования dll-библиотек. Описание коэффициентов моделей. Разработка структуры классов. Реализация библиотеки классов в среде разработки MS Visual Studio.

    дипломная работа [676,6 K], добавлен 16.06.2015

  • Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.

    курсовая работа [585,5 K], добавлен 24.03.2009

  • HTML5 — язык для структурирования и представления содержимого для всемирной паутины, а также основная технология, используемая в Интернете. Создание web-приложения и использованием технологии Asp.net MVC 3 и языка web-разметки HTML5. Состав платформы MVC.

    курсовая работа [1,2 M], добавлен 25.05.2012

  • Технология создания многопоточных приложений в современных системах программирования с использованием языка C# в Visual Studio.NET. Разработка алгоритма и структуры программы. Описание и особенности тестирования приложения с разным количеством потоков.

    курсовая работа [773,0 K], добавлен 14.03.2013

  • Техника создания графики при помощи API функций, экспортируемых библиотекой GDI32.DLL. Разработка на языке программирования С++ в среде программирования Microsoft Visual C++ программы для отображения часов реального времени в цифровом и аналоговом виде.

    курсовая работа [2,8 M], добавлен 27.01.2010

  • Разработка и освоение в современном производстве информационной подсистемы. Создание базы данных в среде MS SQL Server 2008 и приложения в среде MS Visual Studio 2012. Процесс ввода при выборе пунктов меню. Заполнение формы с критериями на фильтрацию.

    отчет по практике [834,4 K], добавлен 27.11.2013

  • Изучение принципов объектно-ориентированного программирования. Понятие класса в Delphi, в основе которых лежат три фундаментальные принципы - инкапсуляция, наследование и полиморфизм. Разработка классов транспортных средств и структур классов (кошки).

    курсовая работа [29,7 K], добавлен 29.10.2011

  • Создание приложения Windows Forms в среде Microsoft Visual Studio 2008. Разработка программы "Курсовой" для организации работы по учёту курсовых работ в учебных заведениях с возможностью добавления, удаления, редактирования и поиска информации.

    курсовая работа [2,2 M], добавлен 28.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.