ПОЗНАВАТЕЛЬНОЕ Сила воли ведет к действию, а позитивные действия формируют позитивное отношение Как определить диапазон голоса - ваш вокал
Игровые автоматы с быстрым выводом Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими Целительная привычка Как самому избавиться от обидчивости Противоречивые взгляды на качества, присущие мужчинам Тренинг уверенности в себе Вкуснейший "Салат из свеклы с чесноком" Натюрморт и его изобразительные возможности Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д. Как научиться брать на себя ответственность Зачем нужны границы в отношениях с детьми? Световозвращающие элементы на детской одежде Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия Как слышать голос Бога Классификация ожирения по ИМТ (ВОЗ) Глава 3. Завет мужчины с женщиной 
Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д. Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу. Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар. | Перегрузка операций «поместить в поток» и «взять из потока» С++ способен вводить и выводить стандартные типы данных, используя операции «поместить в поток» >> и операцию «взять из потока» <<. Эти операции уже перегружены в библиотеках классов, которыми снабжены компиляторы С++, чтобы обрабатывать каждый стандартный тип данных, включая строки и адреса памяти. Операции «поместить в поток» и «взять из потока» можно также перегрузить для того, чтобы выполнять ввод и вывод типов, определенных пользователем. Необходимо обратить внимание, что ни функция вывода, ни функция ввода не могут быть членами класса. Это связано с тем, что, если операторная функция является членом класса, левый операнд (неявно передаваемый с помощью указателя this) должен быть объектом класса, который сгенерировал обращение к этой операторной функции. И это изменить нельзя. Однако при перегрузке операторов вывода левый операнд должен быть потоком, а правый – объектом класса, данные которого подлежат выводу (например: cin >> phone). Следовательно, перегруженные операторы вывода не могут быть функциями-членами класса. В связи с этим операторные функции ввода и вывода делают «друзьями» класса. Если функция является «другом» класса, она получает легальный доступ к его private-данным. Чтобы объявить функцию, дружественную данному классу, необходимо включить ее прототип в объявления класса и предварить его ключевым словом friend. Спецификаторы доступа к элементам private, protected и public не имеют отношения к объявлению дружественности, так что объявления дружественных функций могут помещаться в любом месте описания класса. Следующая программа демонстрирует перегрузку операций «поместить в поток» и «взять из потока» для обработки данных класса телефонных номеров PhoneNumber. В этой программе предполагается, что номера вводятся правильно в виде: 4952 12-34-56 (то есть вначале четырехзначный код области, а затем шестизначный городской номер с дефисами между парами цифр). //Перегрузка операторов << и >> #include <iostream> #include <conio.h> using namespace std; class PhoneNumber {friend ostream & operator << (ostream &, const PhoneNumber &); friend istream & operator >> (istream &, PhoneNumber &); private: char areaCode[5]; //четырехцифровой код области и нулевой символ char cityNumber[9]; //восьмицифровой городской номер //в виде 12-34-56 и нулевой символ }; //Перегруженная операция поместить в поток ostream & operator << (ostream &output, const PhoneNumber &num) {output << num.areaCode << " " << num.cityNumber; return output; // разрешает cout << a << b << c; } //Перегруженная операция взять из потока istream & operator >> (istream &input, PhoneNumber &num) { input >> num.areaCode; input >> num.cityNumber; return input; // разрешает cin >> a >> b >> c; } int main() {setlocale(LC_ALL, "Russian"); PhoneNumber phone; // создание объекта phone cout << "Введите номер телефона в виде 4321 12-34-56:\n"; cin >> phone; // вызвается функция operator>> // путем вызова operator>> (cin, phone). cout << "\nБыл введен номер телефона: \n"; cout << phone; // вызвается функция operator<< // путем вызова operator<< (cout, phone). getch(); return 0; } Результат работы программы:  Таким образом, функции ввода и вывода не должны быть членами класса, для обработки данных которого они предназначены. Они могут быть «друзьями» класса или просто независимыми функциями. Порядок выполнения работы В данной работе необходимо разработать и отладить объектно-ориентированную программу на языке С++ в интегрированной среде разработки приложений MS Visual Studio .NET 2005 в соответствии с заданием преподавателя. Для этого надо вначале создать h-файл с объявлением и определением класса, а затем разработать основную программу (cpp-файл с функцией main), в которой используется созданный класс. Варианты заданий 1. Написать тексты h-файлов и cpp-файлов для класса Rect (прямоугольник). Описание класса: Класс | Элементы данных | Интерфейс | Rect | x, y, dx, dy | Конструкторы, функции square, move, операции: =, += (увеличить высоту и ширину), !(отразить прямоугольник относительно оси х), <<, >> | Разработать и отладить программу с примерами создания и использования объектов класса Rect. 2. Разработать класс CDate: Класс | Элементы данных | Интерфейс | CDate | d (день), m (месяц), y (год) | Конструкторы, методы SetDate, операции =, + (прибавляет к дате некоторое количество дней), - (возвращает разность дат в днях), ++ (перевести дату на 1 день вперед), <, >, <<, >>. | Написать тексты h-файла и cpp-файла для класса CDate. Разработать и отладить программу создания и использования объектов класса. 3.Написать тексты h-файлов и cpp-файлов для класса Rect (прямоугольник). Описание класса: Класс | Элементы данных | Интерфейс | Rect | x1, y1, dx, dy | Конструкторы, функции move, resize, операции =, && (пересечение прямоугольников), || (получение наименьшего прямоугольника, содержащего два заданных прямоугольника), !(возвращает площадь прямоугольника) , <<, >> | Разработать и отладить программу с примерами создания и использования объектов класса Rect. 4.Написать тексты h-файлов и cpp-файлов для класса Circle. Описание класса: Класс | Элементы данных | Интерфейс | Circle | x, y, R | Конструкторы, функции move, square, операции =, <, >, + (увеличение радиуса) , <<, >> | Разработать и отладить программу с примерами создания и использования объектов класса Rect. 5.Написать тексты h-файлов и cpp-файлов для класса Rect (прямоугольник). Описание класса: Класс | Элементы данных | Интерфейс | Rect | x1, y1, x2, y2 | Конструкторы, функции move, операции: =, == (равно), != (не равно), !(возвращает периметр прямоугольника) , <<, >> | Разработать и отладить программу с примерами создания и использования объектов класса Rect. 6.Написать тексты h-файлов и cpp-файлов для класса Treugolnik (треугольник). Описание класса: Класс | Элементы данных | Интерфейс | Treugolnik | x1, y1, x2, y2, x3, y3 | Конструкторы, функции move, square, операции =, <, > (сравнение площади), !(отразить треугольник относительно оси y) , <<, >> | Разработать и отладить программу с примерами создания и использования объектов класса Treugolnik. 7. Разработать класс Fraction (Дробь): Класс | Элементы данных | Интерфейс | Fraction | a (числитель), b (знаменатель) | Конструкторы, операции =, +, -, ==, !=, ! (проверить конечность дроби, возвращает true/false) , <<, >>. | Написать тексты h-файла и cpp-файла для класса Fraction. Разработать и отладить программу создания и использования объектов класса. 8. Разработать класс Complex: Класс | Элементы данных | Интерфейс | Complex | x, y | Конструкторы, операции =, +, -, ==, !=, *, -(унарный минус, что соответствует умножению на -1) , <<, >>. | Написать тексты h-файла и cpp-файла для класса Complex. Разработать и отладить программу создания и использования объектов класса. 9. Разработать класс CLine (Прямая, заданная общим уравнением вида Ax+By+C=0) Класс | Элементы данных | Интерфейс | CLine | A, B, C | Конструкторы, операции =, ! (возвращает true, если прямые пересекаются, иначе - false), * (определяет точку пересечения двух прямых), ^ (возвращает угол наклона прямой к оси Х), ==, !=, <<, >>. | Написать тексты h-файла и cpp-файла для класса CLine. Разработать и отладить программу создания и использования объектов класса. 10. Разработать класс Fraction (Дробь): Класс | Элементы данных | Интерфейс | Fraction | p (числитель), q (знаменатель) | Конструкторы, операции =, +, -, <, >, ! (Период дроби (результат – тип Long)) , <<, >>. | Написать тексты h-файла и cpp-файла для класса Fraction. Разработать и отладить программу создания и использования объектов класса. 11. Разработать класс Line (Прямая, заданная уравнением вида y=kx+b) Класс | Элементы данных | Интерфейс | Line | k, b | Конструкторы, метод distance(x,y) – определяет расстояние от заданной точки до прямой, операции =, ! (возвращает true, если прямые параллельны, иначе - false), * (определяет точку пересечения двух прямых), ==, !=, <<, >>. | Написать тексты h-файла и cpp-файла для класса Line. Разработать и отладить программу создания и использования объектов класса. 12. Разработать класс Drob (Дробь): Класс | Элементы данных | Интерфейс | Drob | p (числитель), q (знаменатель) | Конструкторы, операции =, +=, -=, <=, >=, ! (возвращает период дроби) , <<, >>. | Написать тексты h-файла и cpp-файла для класса Drob. Разработать и отладить программу создания и использования объектов класса. 13. Разработать класс CTime: Класс | Элементы данных | Интерфейс | CTime | h (часы), m (минуты), s (секунды) | Конструкторы, методы SetTime, операции =, + (прибавляет некоторое количество минут), - (возвращает разность времени в секундах), ++ (перевести время на 1 секунду вперед), <, >, <<, >>. | Написать тексты h-файла и cpp-файла для класса CTime. Разработать и отладить программу создания и использования объектов класса. |