План лекции
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 и т.д. Разработать и сопровождать такие проекты по силам только большим группам программистов. Методами структурного программирования, применяемыми ранее, эти проекты реализовать было просто невозможно.