Классы и объекты в Microsoft Visual C++

Классы Visual C++ в конструкторе классов. Простое наследование базового класса. Использование множественного наследования. Особенности реализации и визуализации классов анонимных, абстрактных, шаблонных типов, их характерные черты, требования к объектам.

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

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

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

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

Лабораторная работа №3

Тема: Классы и объекты в Microsoft Visual c++

конструктор наследование абстрактный

Цель работы: Изучение классов и объектов в Microsoft Visual c++

Классы Visual C++ в конструкторе классов

Конструктор классов поддерживает классы C++ и отображает собственные классы C++ так же, как фигуры классов Visual Basic и Visual C#, за исключением того что классы C++ могут обладать отношениями множественного наследования. Для отображения полей и методов в классе можно развернуть фигуру класса или свернуть ее для экономии места.

Примечание

Конструктор классов не поддерживает объединения (специальный тип класса, в котором память выделяется только по мере необходимости для объединения больших данных-членов).

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

При перетаскивании в схему классов более одного класса, имеющие отношение наследования, между этими классами появляется соединение в виде стрелки. Стрелка указывает в направлении базового класса. Например, если отобразить в схеме следующие классы, то они будут соединены стрелкой, указывающей от B к A:

class A {};

class B : A {};

Можно перетащить в схему классов только один класс B и просмотреть его базовые классы, щелкнув правой кнопкой мыши фигуру класса B и затем выбрав команду Показать базовые классы. Будет показан его базовый класс: A.

Множественное наследование

Конструктор классов поддерживает наглядное представление отношений множественного наследования классов. Множественное наследование используется, если у производного класса есть атрибуты более чем одного базового класса. Пример множественного наследования:

class Bird {};

class Swimmer {};

class Penguin : public Bird, public Swimmer {};

При перетаскивании в схему классов более одного класса появится стрелка, соединяющая классы, которые обладают отношениями множественного наследования. Стрелка указывает в направлении базовых классов.

Чтобы отобразить базовые классы выбранного класса, щелкните правой кнопкой мыши фигуру класса и затем выберите командуПоказать базовые классы.

Примечание

Команда Показать производные классы не поддерживается для кода C++. Чтобы отобразить производные классы, необходимо перейти в "Окно классов", развернуть узел типа, затем развернуть вложенную папку Производные типы и перетащить требуемые классы в схему классов.

Абстрактные классы

Конструктор классов поддерживает абстрактные классы (также называемые "абстрактные базовые классы"). Из данных классов никогда не создаются экземпляры, но из них можно создать другие производные классы. Используя пример, приведенный в данном документе в разделе "Множественное наследование", можно создать экземпляр класса Bird как отдельный объект:

int main()

{

Bird sparrow;

Bird crow;

Bird eagle;

}

Однако нельзя создать экземпляр класса Swimmer как отдельный объект. Из него можно создать производные классы других типов классов животных, например Penguin, Whale и Fish. В данном случае класс Swimmer будет объявлен как абстрактный базовый класс.

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

class Swimmer abstract

{

virtual void swim();

void dive();

};

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

class Swimmer

{

virtual void swim() = 0;

void dive();

};

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

Класс, являющийся производным от абстрактного базового класса, должен переопределять каждую чисто виртуальную функцию в базовом классе, иначе невозможно будет создать экземпляр из производного класса. Например, если класс Fish является производным от класса Swimmer, класс Fish должен переопределять метод swim:

class Fish : public Swimmer

{

void swim(int speed);

};

int main()

{

Fish guppy;

}

При отображении данного кода в схеме классов конструктор классов нарисует линию наследования от Fish к Swimmer.

Анонимные классы

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

typedef struct

{

unsigned x;

unsigned y;

} POINT;

Структуры также могут быть анонимными. Конструктор классов отображает анонимные классы и структуры таким же образом, как отображает соответствующие типы. Несмотря на то что можно объявить и отобразить анонимные классы и структуры, конструктор классов не будет использовать указанное пользователем имя тега. Он будет использовать имя, которое создаст "Окно классов". Класс или структура отображаются в "Окне классов" и "Конструкторе классов" как элементы с именем __unnamed.

Дополнительные сведения об анонимных классах см. в разделе Типы анонимных классов.

Классы-шаблоны

Конструктор классов поддерживает визуализацию классов-шаблонов. Вложенные объявления поддерживаются. В следующей таблице представлены некоторые объявления:

Элемент кода

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

template <class T>

class A {};

A<T>

Класс-шаблон

template <class T, class U>

class A {};

A<T, U>

Класс-шаблон

template <class T, int i>

class A {};

A<T, i>

Класс-шаблон

template <class T, template <class K> class U>

class A {};

A<T, U>

Класс-шаблон

Привязка объектов в Visual Studio

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

Требования к объектам

Единственное требование для пользовательских объектов для работы с средствами разработки данных в Visual Studio - то, что объекту требуется по крайней мере одно общее свойство.

В целом пользовательские объекты не нуждаются в определенных интерфейсах, конструкторах или атрибутах, чтобы служить источником данных для приложения. Однако если необходимо перетащить объект из окна Источники данных в рабочую область конструирования для создания элемента управления, связанного с данными, и если этот объект реализует интерфейс ITypedList или IListSource, то он должен иметь конструктор по умолчанию (то есть конструктор без параметров). В противном случае Visual Studio не сможет создать экземпляр объекта источника данных и отобразит ошибку при перетаскивании элемента в рабочую область конструирования.

Примеры использования пользовательских объектов в качестве источников данных

Хотя есть множество способов реализовать логику приложения при работе с объектами в качестве источников данных, существует несколько стандартных операций, которые можно упростить с помощью создаваемых Visual Studio объектов TableAdapter. На этой странице обсуждаются способы реализации этих стандартных процессов с помощью объектов адаптеров таблиц; страница не является руководством для создания пользовательских объектов. Например, вы можете выполнять следующие стандартные операции независимо от конкретной реализации объектов или логики приложения:

· Загрузка данных в объекты (обычно из базы данных).

· Создание типизированных коллекций объектов.

· Добавление объектов в коллекцию и их удаление.

· Отображение данных объектов для пользователей на форме.

· Изменение/редактирование данных в объекте.

· Сохранение данных из объектов обратно в базу данных.

Загрузка данных в объекты

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

· Метод TableAdapter.Fill позволяет заполнять существующие таблицы данных возвращаемыми данными.

· Метод TableAdapter.GetData позволяет возвращать новую таблицу данных, заполненную данными.

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

Пример: Составить программу которая вычисляет площадь и периметр прямоугольника.

#include <iostream>

#include <conio.h>

using namespace std;

class Pryamougolnik {

private:

int a;

int b;

public:

void GetA();

void GetB();

int RArea() { //считаем площадь прямоугольника

return a*b;

}

int RPerimeter() { //считаем периметр прямоугольника

return (a + b) * 2;

}

};

void Pryamougolnik::GetA() {

cin >> a;

}

void Pryamougolnik::GetB() {

cin >> b;

}

int main() {

Pryamougolnik R1;

R1.GetA(); //считываем а

R1.GetB(); //считываем б

cout << "Area: " << R1.RArea() << ", Perimeter: " << R1.RPerimeter() << endl; //вывод ответа

_getch();

}

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

...

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

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

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

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

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

  • Классы, объекты и объектные ссылки. Особенности статических методов. Конструкторы, специальные переменные, наследование. Создание объектов внутренних классов. Соглашения об именовании. Некоторые методы класса Object. Абстрактные классы и атрибуты.

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

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

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

  • Обзор криптографических классов библиотеки Framework Class Libr: классы алгоритмов симметричного и асимметричного шифрования, хеширования. Классы-форматеры и деформатеры. Классы для формирования и проверки цифровой подписи. Примеры применения классов.

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

  • Виды коллекций-классов, реализующих интерфейс Collection. Основные классы пакета java.util и работа с системным временем (Класс java.util.Date), файлами и потоками ввода/вывода, обработка строки (объекты класса String). Спецификация класса Statistics.

    методичка [185,8 K], добавлен 30.06.2009

  • Описание отношений между частями сложного проекта с помощью Visual Studio. Создание графов зависимостей для управляемого и машинного кода. Их использование для визуализации взаимосвязей между классами. Выявление циркулярных ссылок для обнаружения классов.

    контрольная работа [1,1 M], добавлен 20.02.2015

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

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

  • Понятие пакета как объединения классов (java.awt, java.lang). Способы импорта, проблема конфликта (пакеты содержат классы с одинаковым именем). Особенности реализации интерфейса, его поля. Понятие наследования интерфейса. Общие методы классов-оболочек.

    презентация [140,1 K], добавлен 21.06.2014

  • Классы и свойства объектно-ориентированного пространства. Методика создания новых классов в delphi: выбор родительского класса, изменение существующих компонентов, создание подклассов для элементов управления windows. Создание новой ветви классов.

    контрольная работа [13,0 K], добавлен 07.07.2012

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

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

  • Обзор возможностей, базовых классов и элементов управления Microsoft Visual Foxpro, описание функций и возможностей языка SQL. Постановка задачи, руководство пользователя и листинг программы. Компоненты информационной системы, основные функции СУБД.

    курсовая работа [360,1 K], добавлен 12.06.2010

  • Механизм классов в C++. Инициализация внутреннего объекта с помощью конструктора. Управление доступом к классу. Защищенные члены класса. Графические средства компилятора Borland C 3.1. Библиотека стандартных шаблонов. Реализация и использование класса.

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

  • Понятие объектов и классов в Visual Basic. Свойства, методы и события. Создание Титула на рабочем листе с помощью процедур обработки событий в UserForm. Определение диапазона для создания таблицы и ее заголовка. Создание формы по заполнению таблицы.

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

  • Разработка программы FileInfo, выдающей полную информацию о заданном файле с применением языка программирования С++, используя API функции Win 32. Использование пространств имён .NetFramework. Руководство пользователя и системные требования программы.

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

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

    дипломная работа [1,5 M], добавлен 10.06.2013

  • Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.

    методичка [2,1 M], добавлен 11.09.2014

  • Visual Basic for Application. Объекты и коллекции. Использование VBA в среде Access. Основы современной технологии проектирования АИС. Автоматизированное проектированиеCASE-технологий. Реинжиниринг бизнес-процессов и проектирование корпоративной ИС.

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

  • Средства интегрированной среды Microsoft Visual Studio, предоставляемые программисту для реализации программ на языке С++. Особенности стиля написания программ. Типовые приемы и методы создания и отладки программ. Листинги программ и их тестирование.

    лабораторная работа [814,3 K], добавлен 26.05.2013

  • Основы языка Visual Prolog. Введение в логическое программирование. Особенности составления прологов, синтаксис логики предикатов. Программы на Visual Prolog. Унификация и поиск с возвратом. Использование нескольких значений как единого целого.

    лекция [120,5 K], добавлен 28.05.2010

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