План лекции

1. Библиотеки классов VC++

2. Библиотеки классов Standard C++

3. Классы и ООП

4. Программирование для Windows

 

1. Библиотеки классов VC++

 

Компилятор Microsoft VC++ имеет в своем составе большой набор классов для создания и работы с объектами типа строка, дата, время, файлами и т.д., называемых библиотекой MFC(Microsoft Foundation Classes).

 

// Пример 6.4.1

// Объекты типа дата-время из библиотеки MFC

#include <iostream>

#include <fstream>

#define _AFXDLL

// заголовки MFC

#include <afx.h>

#include <afxwin.h>

using namespace std;

int main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

CTime d(2002,1,14,12,30,45);

cout << "Текущая дата : " << d.GetDay() << "." << d.GetMonth() << "."
<< d.GetYear() << endl;

cout << "Текущее время : " << d.GetHour() << ':' << d.GetMinute()
<< ':' << d.GetSecond() << endl;

d+=CTimeSpan(30,0,0,0);

cout << "Через 30 дней : " << d.GetDay() << "." << d.GetMonth()
<< "." << d.GetYear() << endl;

cout << " Текущее время: " << d.GetHour() << ':' << d.GetMinute()

<< ':' << d.GetSecond() << endl;

d-=CTimeSpan(20,0,0,0);

cout << "Раньше на 20 дней : " << d.GetDay() << "." << d.GetMonth()
<< "." << d.GetYear() << endl;

cout << "Текущее время: " << d.GetHour() << ':' << d.GetMinute()
<< ':' << d.GetSecond() << endl;

d=CTime::GetCurrentTime();

cout << "Текущая дата: " << d.GetDay() << "." << d.GetMonth()
<< "." << d.GetYear() << endl;

cout << "Текущее время: " << d.GetHour() << ':' << d.GetMinute()
<< ':' << d.GetSecond() << endl;

cin.get();

}

 

// Пример 6.4.2

// Объекты-строки из библиотеки MFC

#include <iostream>

#include <fstream>

#define _AFXDLL

// заголовки MFC

#include <afx.h>

#include <afxwin.h>

using namespace std;

int main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

CStringA fM="Иванов",iM("Иван"),oM("Иванович"), fioM;

CStringA txt1="Длина : ", txt2("Фамилия : ");

fM.CharToOemA(); iM.CharToOemA(); oM.CharToOemA();

txt1.CharToOemA(); txt2.CharToOemA();

cout << txt1 << fioM.GetLength() << endl;

fioM=fM + ' ' + iM + ' ' + oM;

cout << txt2 << fioM << endl;

cout << txt1 << fioM.GetLength() << endl;

fioM=fM + ' ' + iM[0] + '.' + oM[0] + '.';

cout << txt2 << fioM << endl;

cout << txt1 << fioM.GetLength() << endl;

fioM.MakeUpper();

cout << txt2 << fioM << endl;

fioM.OemToCharA();

cout << txt2 << fioM << endl;

fioM="Ivanov I.I.";

fioM.MakeUpper();

cout << txt2 << fioM << endl;

fioM.MakeLower();

cout << txt2 << fioM << endl;

fioM.MakeReverse();

cout << txt2 << fioM << endl;

if (fM > oM)

cout << "More" << endl;

else

cout << "Less" << endl;

cin.get();

}

 

// Пример 6.4.3

// // Объекты - точки и прямоугольники из библиотеки MFC

#include <iostream>

#include <fstream>

#define _AFXDLL

// заголовки MFC

#include <afx.h>

#include <afxwin.h>

using namespace std;

int main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

CPoint p1(100,100), p2(250,300),pc;

CRect r(p1,p2);

pc=r.CenterPoint();

cout << "Ширина=" << r.Width() << '\t' << "Высота=" << r.Height() << endl;

pc=r.CenterPoint();

cout << "X=" << pc.x << '\t' << "Y=" << pc.y << endl;

cin.get();

}

 

2. Библиотеки классов Standard C++

 

Отличительной чертой Standard C++ является обязательное включе­ние в состав каждого компилятора стандартной библиотеки шаблонов - Standard Template Library (STL), которая содержит большой набор классов для структур данных, строк, потоков ввода-вывода и т.д. Классы именно этой библиотеки рекомендуют использовать в новых разработках.

 

// Пример 6.4.4

// Объекты-строки из библиотеки STL

#include <iostream>

#include <string>

using namespace std;

int main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

// объявление строк

string str1("String demonstration");

string str2("String two");

string str3;

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

str3 = str1;

cout << str1 << "\n" << str3 << "\n";

// конкатенация двух строк

str3 = str1 + str2;

cout << str3 << "\n";

// сравнение строк

if(str3 > str1) cout << "str3 > str1\n";

if(str3 == str1+str2) cout << "str3 == str1+str2\n";

// строковому объекту можно присвоить обычную строку

str1 = "This is normal string\n";

cout << str1;

// создание строкового объекта с помощью другого строкового объекта

string str4(str1);

cout << str4;

cout << "Введите строку: "; // ввод строки

cin >> str4;

cout << str4;

cin.get();

return 0;

}

// Пример 6.4.5

// Объекты - стандартные файловые потоки ввода-вывода ofstream и ifstream

#include <iostream>

#include <fstream>

using namespace std;

int main() {

setlocale( LC_ALL, "Russian"); // для вывода на экран русского текста

int a=5; double b=1.23456; char str[20]="Hello_VC++";

// вывод в файл на диск

ofstream fout("c:\\MyFile.txt");

if (fout.fail()){

cout << "Ошибка!!!" << endl; cin.get(); return 1;

}

fout << a << '\t' << b << '\t' << str << endl;

fout.close();

// ввод из файла на диске

a=0; b=0 ;strcpy(str,"");

cout << a << '\t' << b << '\t' << str << endl;

cin.get();

ifstream fin("c:\\MyFile.txt");

if (fin.fail()){

cout << "Нет файла!!!" << endl; cin.get(); return 1;

}

fin >> a >> b >> str;

fin.close();

cout << a << '\t' << b << '\t' << str << endl;

cin.get();

return 0;

}

 

3. Классы и ООП

 

Понятие класс и ООП(объектно-ориентированное программирование - методика разработки программ, состоящих из объектов) позволили реализовать, внедрить в жизнь и постоянно дорабатывать огромные по размерам программные проекты, такие как операционная система Windows, пакет Microsoft Office, языки визуального проектирования VB, C#, C++ Builder, QT Creator и т.д. Разработать и сопровождать такие проекты по силам только большим группам программистов. Методами структурного программирования, применяемыми ранее, эти проекты реализовать было просто невозможно.