- •Кафедра вычислительных систем и программирования высокоуровневые методы информатики и программирования
- •Санкт-Петербург
- •1.Общие положения по организации
- •2. Программирование информационной мини-системы управления методом процедурно-ориентированного программирования (тема 2).
- •2.1. Постановка задачи и проектирование программы
- •2.2. Реализация программы
- •Vyvod(cout, client);
- •Vyvod(outprintf, client);
- •Void dobzap(fstream &dobf)
- •Int tabn;
- •Int operator!(); //элемент-функция класса
- •Int akt::operator!()
- •4. Блоки лабораторных работ по разделу «Объектно-
- •4.1. Блок по теме «Создание Windows-приложений»
- •4.2. Блоки по теме «Управление многооконными
- •4.2.1. Блок «Ввод/вывод информации»
- •Int k;//номер текущей вводимой строки
- •Invalidate();
- •If (!cursor)//если курсор еще не создан, надо создать.
- •Int X,y;//объявить переменные для хранения координат мыши
- •4.2.2. Меню, акселераторы, кнопки
- •Invalidate();
- •Invalidate(); }
- •4.2.3. Диалоговые окна
- •Invalidate();
- •4.2.4. Управление файловой обработкой
- •Invalidate(); //при вводе символа вид объявл. Не действительным
- •Void AddText(uint text) {data.AppendChar(text);} //доб. В конец стр.
- •Invalidate(); //при вводе символа вид объявл. Не действительным
- •Void Serialize(cArchive& archive);//прототип переопред. Функции
- •Void cData::Serialize(cArchive& archive)
- •If (archive.IsStoring())
- •Implement_serial(cData, cObject, 0)//класс,баз. Класс,номер
- •Invalidate();
- •Invalidate();
- •5.2. Блок по теме «Поддержка баз данных»
- •If (m_Add) //если true, то добавление записи
- •5.3. Блок по теме «Программирование для Internet»
- •If (!pIs) //2 проверка подключения компъютера к Internet
- •If (!pIs) //3 проверка подключения
- •If (!pFc) //5 проверка соединения с ftp-узлом
- •6. Рекомендуемая литература
- •7. Содержание
Int operator!(); //элемент-функция класса
friend istream& operator>>(istream& is, akt& z);//внешние
friend ostream& operator<<(ostream& os, akt& z);//функции
};
Добавить в файл кодов lab4.cpp тексты функций-операций
operator!(), operator>>, operator<<, а также - функции main():
//файл кодов lab4.cpp
#include “stdafx.h”
#include “lab4.h”
Int akt::operator!()
{
return(tabn[0]==’\0’);
}
istream& operator>>(istream& is, akt& z)
{
cout<<”Таб. номер :”;
is>>z.tabn;
cout<<”Объем работ:”;
is>>z.objem;
return(is);
}
ostream& operator<<(ostream& os, akt& z)
{
os<<”Таб. номер:”<<z.tabn<<’\n’;
os<<”Объем :”<<z.objem<<’\n’;
return(os);
}
int _tmain(int args, _TCHAR* argv[])
{
akt obj;
if (!obj)
cout<<”Объект пустой, введите данные:\n”;
cin>>obj;
if (!!obj) cout<<”Объект имеет данные:\n”;
cout<<obj;
return 0;
}
Компиляция, запуск и тестирование приложения
Выбрать команду Build->Build lab1. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start Without Debugging - запуск на выполнении программы.
lab5 «Преобразование типов конструктором»
Преобразование типов, определяемые классом, выполняется конструктором преобразования или функцией-операцией преобразования.
Цель работы – преобразование из типа аргумента в тип класса с помощью конструктора преобразования.
Условие задачи: сложить комплексное число с вещественным числом с получением комплексного числа.
Пусть имеется класс complex с перегруженной операцией (+). Добавим в класс complex конструктор преобразования с аргументом типа float.
Создание проекта консольного приложения
Выполнить этапы согласно п. 2.1 и ввести имя проекта lab5.
Создается исходный файл lab5.cpp, который будет содержать одну пустую функцию main():
int _tmain(int args, _TCHAR* argv[])
{return 0;}.
Создание и добавление исходных файлов в проект
Проект должен содержать файл заголовков lab5.h и файл кодов lab5.cpp.
Создать файл lab5.h, ввести текст файла и сохранить его.
//файл заголовков lab5.h
#include <iostream>
using std::cout;
class complex
{
public:
float d, m;
complex () {d=m=0;}
complex(float x, float y) {d=x; m=y;}
complex operator +(complex& x);
complex(float x) {d=x; m=0;} //конструктор преобразования
};
Добавить в файл кодов lab5.cpp тексты функции-операции
operator+() и функции main().
//файл кодов lab5.cpp
#include "stdafx.h"
#include "lab5.h"
complex complex::operator +(complex& x)
{
complex y;
y.d=d+x.d;
y.m=m+x.m;
return(y);
}
int _tmain(int args, _TCHAR* argv[])
{
complex obj1(0,1);
complex a(4.5);
obj1=obj1+a; //a преобразуется из float в complex
cout<<obj1.d<<" "<<obj1.m<<'\n'; //результат: 4.5 1
return 0;
}
Компиляция, запуск и тестирование приложения
Выбрать команду Build->Build lab1. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start Without Debugging - запуск на выполнении программы.
lab6 «Преобразование типов функцией-операцией»
Цель работы – преобразование из типа класса в тип аргумента с помощью функции-операции преобразования.
Условие задачи: сложить комплексное число с вещественным числом с получением вещественного числа.
Пусть имеется класс complex с перегруженной операцией (+). Заменим в предыдущей работе в классе complex конструктор преобразования на функцию-операцию преобразования с аргументом типа float.
Создание проекта консольного приложения
Выполнить этапы согласно п. 2.1 и ввести имя проекта lab6.
Создается исходный файл lab6.cpp, который будет содержать одну пустую функцию main():
int _tmain(int args, _TCHAR* argv[])
{return 0;}.
Создание и добавление исходных файлов в проект
Проект должен содержать файл заголовков lab6.h и файл кодов lab6.cpp.
Создать файл lab6.h, ввести текст файла и сохранить его.
//файл заголовков lab6.h
#include <iostream>
using std::cout;
class complex
{
public:
float d, m;
complex () {d=m=0;}
complex(float x, float y) {d=x; m=y;}
complex operator +(complex& x);
operator float()
{
return(d);}
};
Добавить в файл кодов lab6.cpp тексты функции-операции
operator+() и функции main():
//файл кодов lab6.cpp
#include "stdafx.h"
#include "lab6.h"
complex complex::operator +(complex& x)
{
complex y;
y.d=d+x.d;
y.m=m+x.m;
return(y);
}
int _tmain(int args, _TCHAR* argv[])
{
complex obj1(0,1);
float a=4.5;
float b=obj1+a; //obj1 преобразуется из complex в тип float
cout<<b<<'\n'; //результат: 4.5
return 0;
}
Компиляция, запуск и тестирование приложения
Выбрать команду Build->Build lab1. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start Without Debugging - запуск на выполнении программы.
lab7 «Виртуальные элементы-функции»
Цель работы – изучения механизма виртуальных функций.
Виртуальная функция – это элемент-функция базового класса в иерархии наследования со спецификатором virtual , переопределенная в производных классах и вызываемая в зависимости от класса через указатель или ссылку на базовый класс.
Условие задачи: имеется иерархия трех классов cl1->cl2->cl3, в каждом из которых переопределена функция vyvod(); составить программу последовательного вызова функций vyvod() этих классов.
Создание проекта консольного приложения
Выполнить этапы согласно п. 2.1 и ввести имя проекта lab7.
Создается исходный файл lab7.cpp, который будет содержать одну пустую функцию main():
int _tmain(int args, _TCHAR* argv[])
{return 0;}.
Создание и добавление исходных файлов в проект
Проект должен содержать файл заголовков lab7.h и файл кодов lab7.cpp.
Создать файл lab7.h, ввести текст файла и сохранить его.
//файл заголовков lab.h
#include <iostream>
using std::cout;
class cl1
{ public: virtual void vyvod(); };
class cl2:public cl1
{ public: void vyvod(); };
class cl3:public cl2
{ public: void vyvod(); };
Добавить в файл кодов lab7.cpp тексты функций vyvod() этих классов и функции main():
//файл кодов lab7.cpp
#include "stdafx.h"
#include "lab7.h"
void cl1::vyvod() { cout<<"Работники предприятия\n"; }
void cl2::vyvod() { cout<<"Работники цеха\n"; }
void cl3::vyvod() { cout<<"Рабочие участка\n"; }
int _tmain(int args, _TCHAR* argv[])
{
cl1 obj1; cl2 obj2; cl3 obj3;
cl1 *p[3]; //cl1& r1=obj1; ссылки
p[0]=&obj1; //cl1& r2=obj2;
p[1]=&obj2; //cl1& r3=0bj3; //Результат решения:
p[2]=&obj3; //r1.vyvod();//Работники предприятия
for (int i=0;i<3;i++) //r2.vyvod(); //Работники цеха
p[i]->vyvod(); //r3.vyvod(); //Рабочие участка
}
Компиляция, запуск и тестирование приложения
Выбрать команду Build->Build lab1. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start Without Debugging - запуск на выполнении программы.