Технологии программирования

Автор работы: Пользователь скрыл имя, 10 Апреля 2012 в 21:50, курсовая работа

Краткое описание

Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент». Создать массив объектов базового класса и заполнить этот массив объектами. Показать отдельно студентов и школьников.

Содержимое работы - 1 файл

Контрольная работа 6 сем.docx

— 24.43 Кб (Скачать файл)

Академия  управления при Президенте Республики Беларусь

Факультет инновационной  подготовки

Кафедра управления информационными ресурсами 
 
 
 
 
 

Контрольная работа по предмету:

Технологии  программирования 
 
 
 
 

Выполнил:

 Студент  3 курса

Заочной формы  обучения

Арыков Виталий

Зачетная  книжка №08431

Вариант №2 
 
 
 
 

     Минск 2011

Задача  №1 на тему «Классы. Наследование» 

Создать базовый  класс «Учащийся» и производные  классы «Школьник» и «Студент». Создать  массив объектов базового класса и  заполнить этот массив объектами. Показать отдельно студентов и школьников. 

Краткие теоретические сведения:

Классы С++ предусматривают  создание расширений системы предопределенных типов. Каждый тип класса представляет собой уникальное множество объектов и операций (правил), а также преобразований, используемых для создания, манипулирования  и уничтожения таких объектов. Могут быть объявлены производные  классы, наследующие компоненты одного или более базовых (порождающих) классов.  Класс в языке С++ задается с помощью ключевого слова class, за которым следует его имя и в фигурных скобках {} дается его описание.

Наследование  – это механизм создания нового класса на основе ранее созданного. Наследование имеет смысл, если множество  разнородных объектов имеют общие  характеристики или функции.

В С++ виртуальные  функции позволяют использовать полиморфизм классов. Виртуальные функции объявляются с помощью ключевого слова virtual в базовом классе. При этом для базового класса и для всех производных создаётся таблица указателей на функции - виртуальная таблица методов/функций. 

Блок-Схема

    -

 

+ 
 
 
 

Код программы: 

#include "stdafx.h"

#include "iostream"

using namespace std;

class Study

{

protected:

      char surname[40];

      int age;

public:

      void getdata()

      {

     cout<<"Surname is "; cin>>surname;

      cout<<"How old is he(she)?"; cin>>age; 

      }

      void show()

      { cout<<"Surname : "<<surname<<endl;

      cout<<age<<" years old"<<endl; 

}

      virtual void data()=0;

      virtual void showit()=0;

};

////////////////

class Student : public Study

{

private:

      int kurs;

public:

      void data()

      {

            Study::getdata();

            cout<<"Kakoi kurs? "; cin>>kurs;

      }

            void showit()

      {

            cout<<"Student: "<<endl;

            Study::show();

            cout<<" "<<kurs<<" kours"<<endl;

      }

};

/////////////////

class School : public Study

{

private:

      int klass;

public:

      void data()

      {

            Study::getdata();

            cout<<"Kakoi klass? "; cin>>klass;

      }

      void showit()

      {

            cout<<"Schoolarship: "<<endl;

            Study::show();

            cout<<" "<<klass<<" klass"<<endl;

            }

}; 
 
 

int main(int argc, char* argv[])

{

      Study* std[150];

      int n=0;

      char choice;

      do

      { cout<<"From College or School? (input 'c' for college or 's' for school)"<<endl;

            cin>>choice;

            if(choice=='c' || choice=='s')

            { if(choice=='c')

                  std[n]=new Student;

            else

                  std[n]=new School;

                  std[n++]->data();

                  cout<<"Another person? (y/n)?";

                        cin>>choice;

            }

            else cout<<"Incorrect!"<<endl;

            }

                  while (choice=='y');

                  for(int j=0; j<n; j++)

            {

                  std[j]->showit();

                  cout<<"********************"<<endl;

            }

                  system("pause");

      return 0;

}

Задача  №2 на тему «Перегрузка»

Написать  программу, которая использует перегрузку методов класса:

Для целых  данных вычисляется квадрат числа, для действительных – косинус  угла. 

Краткие теоретические сведения:

При определении  функций в своих программах мы должны указать тип возвращаемого функцией значения, а также количество параметров и тип каждого из них. C++ позволяет нам определять несколько функций с одним и тем же именем. В процессе компиляции C++ принимает во внимание количество аргументов, используемых каждой функцией, и затем вызывает именно требуемую функцию. Предоставление компилятору выбора среди нескольких функций называется перегрузкой. 

Блок-Схема:

 
 
 
 
 
 
 
 

Код программы:

#include "stdafx.h"

#include <iostream>

#include <cmath>

using namespace std; 

class Over

{

public:

int pfun(int a)

{

cout<<"x= ";

return (a*a);

}

double pfun(double a)

{

cout<<"x= ";

return (cos (a));

}

}; 

void main()

{

Over x;

cout<<x.pfun(5)<<endl;

cout<<x.pfun(3.1416*2)<<endl;//~1

cout<<x.pfun(11)<<endl;

cout<<x.pfun(0.0)<<endl;//esli prosto 0 to otvet 0!

cout<<x.pfun(3.1416/3)<<endl;//

getchar(); 

} 
 
 
 
 
 
 
 
 
 

Задание №3 на тему «Дружественность»

Имеется класс фигуры, содержащий информацию о ее параметрах. Вычислить с помощью дружественной  функции периметр и площадь прямоугольника.

.

Краткие теоретические сведения:

В некоторых случаях необходимо организовать взаимодействие нескольких объектов разных классов, и функция, обеспечивающая взаимодействие, должна иметь доступ к частным компонентам одновременно нескольких объектов. Объявить функцию методом одновременно нескольких классов невозможно, поэтому в стандарте языка С++ предусмотрена возможность объявлять внешнюю по отношению к классу функцию дружественной данному классу. Для этого необходимо в теле класса описать некоторую внешнюю по отношению к классу функцию с использованием ключевого слова friend.

Дружественная функция становится расширением  интерфейса класса, и этот интерфейс  реализует взаимодействие объекта  с другими объектами программы. 

Блок-Схема:

 
 
 
 
 
 
 

Код программы: 

#include "stdafx.h"

#include <iostream>

#include <string>

using namespace std; 

class Vys ; 

class Shir {

private :

double AB; 

public :

Shir() : AB(0.0)

{}

Shir(double ab)

{

AB=ab;

}

friend double frifunc (Shir, Vys);

};

class Vys

{

private :

double BC;

public :

Vys() :BC(0.0)

{}

Vys(double bc) : BC(bc)

{

BC=bc;

} 

friend double frifunc (Shir, Vys); 

};

double frifunc (Shir a,Vys b)

{

cout<<"P= ";double P;

P=2*(a.AB+b.BC);

cout<<P<<endl;

cout<<"S= ";

return (a.AB*b.BC); 

}

int main()

{

Shir ss(5);

Vys hh(4);

cout<<frifunc (ss, hh)<<endl;

getchar();

return 0; 

}


Информация о работе Технологии программирования