Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Дисциплины:
2019-08-07 | 282 |
5.00
из
|
Заказать работу |
|
|
Описание ООП-интерфейса, если отвлечься от деталей синтаксиса конкретных языков, состоит из двух частей: имени и методов интерфейса.
· Имя интерфейса строится по тем же правилам, что и другие идентификаторы используемого языка программирования. Разные языки и среды разработки имеют различные соглашения по оформлению кода, в соответствии с которыми имена интерфейсов могут формироваться по некоторым правилам, которые помогают отличать имя интерфейса от имён других элементов программы. Например, в технологии COM и во всех поддерживающих её языках действует соглашение, следуя которому, имя интерфейса строится по шаблону «I<Имя>», то есть состоит из написанного с заглавной буквы осмысленного имени, которому предшествует заглавная латинская буква I (IUnknown, IDispatch, IStringListи т. п.).
· Методы интерфейса. В описании интерфейса определяются имена и сигнатуры входящих в него методов, то есть процедур или функций класса.
Использование интерфейсов возможно двумя способами:
· Класс может реализовывать интерфейс. Реализация интерфейса заключается в том, что в описании класса данный интерфейс указывается как реализуемый, а в коде класса обязательно определяются все методы, которые описаны в интерфейсе, в полном соответствии с сигнатурами из описания этого интерфейса. То есть, если класс реализует интерфейс, для любого экземпляра этого класса существуют и могут быть вызваны все описанные в интерфейсе методы. Один класс может реализовать несколько интерфейсов одновременно.
· Возможно объявление переменных и параметров методов как имеющих тип «интерфейс». В такую переменную или параметр может быть записан экземпляр любого класса, реализующего интерфейс. Если интерфейс объявлен как тип возвращаемого значения функции, это означает, что функция возвращает объект класса, реализующего данный интерфейс.
|
Шаблонные классы
Так же, как и для функций, можно описать шаблоны для классов. Механизм шаблонов при описании класса позволяет, например, обобщенно описывать множество классов, единственное отличие которых заключается в используемых типах данных.
Объявление шаблона класса:
template Список_параметров шаблона class Имя класса {...};
Процесс генерации объявления класса по шаблону класса и фактическим аргументам шаблона называется инстанцированием шаблона. Обычно он совмещается с объявлением объекта соответствующего конкретного типа.
Синтаксис такого объявления:
Имя класса Список_параметров шаблона Идентификатор объекта;
Функции-члены класса-шаблона автоматически становятся функциями-шаблонами. Для них не обязательно явно задавать ключевое слово template.
Дружественная функция, которая использует параметры шаблона, сама является шаблоном. Конкретная реализация такой функции с учётом специфицированных параметров (порожденная функция) является дружественной для такого инстанцирования класса, которое совпадает по типам с фактическими типами аргументов порожденной функции.
Пример:
template <class T> class Y{...};
template <class T> class X
{
//...
public:
friend void f1();
// функция f1() является
// дружественной ко всем
// инстанцированиям
// класса
friend Y f2(Y par1);
// порождение функции f2()
|
// для фактического типа T
// является дружественной
// только к тому
// инстанцированию класса
// X, которое подходит по
// фактическому
// типу–параметру.
//...
};
template Y f2(Y par1)
{ /*... */ }
Статические члены создаются для каждого инстанцирования класса.
Пример:
template class X {
static T x1;
//...
};
int X:: x1 = 0;
double X:: x1 = 1.5;
int main() {
X <int>xx1;
X <double>xx2;
...
return 0; }
61) /* Создается класс Student. Формируется динамический массив объектов. При
тестировании выводится: сформированный список студентов, список студентов
заданного факультета, список студентов для заданных факультета и курса.*/
#include <conio.h>
#include <string.h>
#include <iostream.h>
struct date // дата рождения
{char daymon[6];
int year; };
//======= class Student =================
class Student{
char name[30]; //private
date t;
char adr[30], fac[20];
int kurs;
public:
Student();
char *getfac();
int getkurs();
void show();
};
Student::Student()
{cout<<"Input name:"; cin>>name;
cout<<"Input date of born\n";
cout<<"Day.mon:"; cin>>t.daymon;
cout<<"Year:"; cin>>t.year;
cout<<"Input adr:"; cin>>adr;
cout<<"Input fac:"; cin>>fac;
cout<<"Input kurs:"; cin>>kurs;
}
void Student::show()
{
cout<<"Name:"<<name<<endl;
cout<<"Was born:"<<t.daymon<<'.'<<t.year<<endl;
cout<<"Address:"<<adr<<endl;
cout<<"Fac:"<<fac<<endl;
cout<<"Kurs:"<<kurs<<endl;
}
char *Student::getfac() { return fac; }
int Student::getkurs() { return kurs; }
void spisfac(Student spis[],int n)//список студентов заданного факультетата
{char fac[20];
cout<<"Input faculty:"; cin>>fac;
for(int i=0;i<n;i++)
if(strcmp(spis[i].getfac(),fac)==0)spis[i].show();
}
void spisfackurs(Student spis[],int n)
//список студентов заданных факультета и курса
{int i,k;
char fac[20];
cout<<"Input faculty:"; cin>>fac;
|
cout<<"Input the course:"; cin>>k;
for(i=0;i<n;i++)
if ((strcmp(spis[i].getfac(),fac)==0)&&(spis[i].getkurs()==k))
spis[i].show();
}
//========= main ================
void main()
{ Student *spis;
int n;
cout<<"Input a number of students: "; cin>>n;
spis=new Student [n];
for(int i=0;i<n;i++) {
cout<<"=============================="<<endl;
spis[i].show();
}
spisfac(spis,n);
spisfackurs(spis,n);
delete [] spis;
cout<<"press any key!"
while(!kbhit());
}
ООП67)
Разработать класс Train (Пункт назначения, Номер поезда, Время отправления, Число общих мест, Купейных, Плацкартных). Включить в класс методы set (…), get (…), show (…). Определить другие методы. Создать массив объектов. Вывести список поездов, следующих до заданного пункта назначения.
67)#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
class train
{
char punkt [20];
int num_train;
double time;
int Placard;
int Kupeynykh;
int common;
public:
train();
char *getpunkt();
int getnum_train();
double gettime();
int getPlacard();
int getKupeynykh();
int getcommon();
void show();
};
train::train()
{
cout «"input punkt:";cin»punkt;
cout «"input num_train:";cin»num_train;
cout «"input time:";cin»time;
cout «"input Placard:";cin»Placard;
cout «"input Kupeynykh:";cin»Kupeynykh;
cout «"input common:";cin»common;
}
void train::show()
{
cout«"punkt:"«punkt«endl;
cout«"num_train:"«num_train«endl;
cout«"time:"«time«endl;
cout«"Placard:"«Placard«endl;
cout«"Kupeynykh:"«Kupeynykh«endl;
cout«"common:"«common«endl;
}
char *train::getpunkt() {return punkt;}
int train::getnum_train() { return num_train; }
double train::gettime() { return time; }
int train::getPlacard() { return Placard; }
int train::getKupeynykh() { return Kupeynykh; }
int train::getcommon() { return common; }
void spistrian(train spis[],int n)
{
// int train;
// cout«"input train:"; cin»train;
for (int i=0;i<n;i++)
// if(strcmp(spis[i].getnum_train(),train)==0)
spis[i].show();
}
void spistrianpunkt(train spis [], int n)
{
int i,k;
char punkt[20];
//int trian();
//cout«"input trian:"; cin»trian;
cout«"input serchin punkt:"; cin»punkt;
for(i=0;i<n;i++)
if ((strcmp(spis[i].getpunkt(),punkt)==0))
spis[i].show();
}
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
train *spis;
int n;
cout«"input a number of train:"; cin»n;
spis=new train [n];
for (int i=0;i<n;i++)
{
cout«"=========="«endl;
spis[i].show();
}
//cout«"=======================";
spistrianpunkt(spis,n);
delete [] spis;
cout«"press sny key!";
while(!kbhit());
return 0;
}
Разработать класс Patient (Фамилия, Имя, Отчество, Адрес, Номер медицинской карты, Диагноз). Включить в класс методы set (…), get (…), show (…). Определить другие методы. Создать массив объектов. Вывести список пациентов, имеющих данный диагноз.
73)#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
|
class patient{
char familya[30];
char imiya[30];
char otchestvo[30];
int nomer karty;
char adres[20],diagnoz[20];
public:
patient();
char *getfamiliya();
char *getimiya();
char *getotchestvo();
char *getdiagnoz();
char);
int getnomer karty(;
void show();
};
patient::patient()
{cout«"Input familya:"; cin»familya;
cout«"Input imiya";cin»imiya;
cout«"Input otchestvo:"; cin»otchestvo;
cout«"Input diagnoz:"; cin»diagnoz;
cout«"Input adres";cin»adres;
cout«"Input nomer karty:"; cin»nomer karty;
}
void patient::show()
{
cout«"familya:"«familya«endl;
cout«"imiya:"«imiya«endl;
cout«"otchestvo:"«otchestvo«endl;
cout«"diagnoz:"«diagnoz«endl;
cout«"adres:"«adres«endl;
cout«"nomer karty:"«nomer karty«endl;
}
char *patient::getfamilya() { return familya; }
char *patient::getimiya() { return imiya; }
char *patient::getotchestvo() { return otchestvo; }
char *patient::getdiagnoz() { return diagnoz; }
char *patient::getadres() { return adres; }
int patient::getnomer karty() { return nomer karty; }
void spispatient(patient spis[],int n)
{
for(int i=0;i<n;i++)
spis[i].show();
}
void spisdiagnoz(patient spis[],int n)
{
int i,k;
char specifieddiagnoz[20];
cout«"Input specifieddiagnoz:"; cin»specifieddiagnoz;
for(i=0;i<n;i++)
if ((strcmp(spis[i].getdiagnoz(),specifieddiagnoz)==0))
spis[i].show();
}
int main(int argc, char** argv) {
patient *spis;
int n;
cout«"input a number of patient:"; cin»n;
spis=new patient [n];
for (int i=0;i<n;i++)
{
cout«"=========="«endl;
spis[i].show();
}
spisaddress(spis,n);
delete [] spis;
cout«"press sny key!";
while(!kbhit());
return 0;
}
|
|
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!