Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пример_выполнения_лаб №2.doc
Скачиваний:
54
Добавлен:
15.03.2015
Размер:
86.02 Кб
Скачать

Лабораторная работы №2. (вариант 6)

Конструирование простейшего класса

Цель работы : знакомство с основными понятиями ООП. Необходимо выполнить конструирование класса, предназначенного для хранения заданной структуры данных, изучить способы создания объектов.

Основные понятия: класс, объект, свойство, метод, конструктор, деструктор, полиморфизм, инкапсуляция

Нам необходимо сконструировать класс с заданным набором свойств в соответствии с нашим вариантом. Мы должны добавить несколько методов, которые позволят нам просмотреть и отредактировать значения любого из свойств.

Свойства класса : марка машины, мощность двигателя, объем бака, цвет кузова.

Цель: определить самую мощную машину

Выставлены определенные требования к конструированию класса – доступ к свойствам – закрытый, к методам – открытый. В классе следует предусмотреть конструктор с параметрами и конструктор по умолчанию.

Программа должна выполнять следующие действия:

  1. Создание объекта с помощью конструктора по умолчанию

  2. Создание объекта с помощью конструктора с параметрами.

  3. Создание массива объектов.

  4. Редактирование и просмотр свойств каждого объекта.

  5. Обработка массива объектов в соответствии с заданием лабораторной работы №1. Ввод исходных данных осуществляется с клавиатуры, вывод – на экран.

1.Создаваемая нами программа содержит один класс class Сar{…};

Этот класс предназначен для хранения информации о машинах, а также средства для обработки этой информации.

2. Программа содержит еще одну функцию int maxpower(Car *, int);

Функция определяет машину с самым мощным двигателем.

Программа состоит из нескольких компонентов. Одним из таких компонентов являются файлы. Мы разделили программу на три файла : main.cpp (файл, в котором хранится главная функция), func.cpp(файл, в котором определены методы класса и внешняя по отношению к классу функция) и, наконец, файл module .h, в котором находятся объявление класса и прототип внешней по отношению к классу функции.

Текст программы:

Файл “Module.H”

#ifndef _MODULE_H //страж включения

#define _MODULE_H

#include <stdlib.h>

#include <iostream>

using namespace std;

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

class Car {

public:

Car();

Car(string mrk, int pwr, int vlm, string clr);

~Car();

string Car::GetMark();

void SetMark(string val);

int GetPower();

void SetPower(int val);

int GetVolume();

void SetVolume(int val);

string Car::GetColor();

void SetColor(string val);

private:

string Mark;

int Power;

int Volume;

string Color;

};

int maxpower(Car*, int);

#endif /* _MODULE_H */

____________________________________________________________

Файл “func.Cpp”

// реализация внешней целевой функции и функций – членов класса (методов)

#include "module.h"

// целевая, внешняя по отношению к классу функция

int maxpower (Car*c, int n) {

int i, max=0, maxnumber=0;

for(i=0; i<n; i++) {

if(c[i].GetPower()>max) {

max=c[i].GetPower();

maxnumber=i;

}

}

cout<<"Car with maximum power is number "<<maxnumber+1<<" ("<<c[maxnumber].GetMark()<<")"<<endl;

return 0;

}

Car::Car() {

// конструктор по умолчанию

}

// конструктор с параметрами

Car::Car(string mrk, int pwr, int vlm, string clr) {

Mark =mrk;

Power=pwr;

Volume=vlm;

Color=clr;

}

Car :: ~Car() {

// деструктор по умолчанию – у нас явно в программе не вызывается,

// его можно в класс не включать

}

string Car::GetMark() { //Метод, позволяющий прочитать значение свойства

return(Mark);

}

void Car::SetMark(string val) { // Метод для установки нового значения

Mark=val; // свойства

}

int Car::GetPower() {

return(Power);

}

void Car::SetPower(int val) {

Power=val;

}

int Car::GetVolume() {

return(Volume);

}

void Car::SetVolume(int val) {

Volume=val;

}

string Car::GetColor() {

return(Color);

}

void Car::SetColor(string val) {

Color=val;

}

Файл “main.Cpp”

// главная программа, использующая класс

#include "module.h"

int main() {

int k;

Car C1; // вызов конструктора по умолчанию

Car C2("Toyota", 130, 50, "Green"); // вызов конструктора с параметрами

C1.SetMark("Nissan"); // Обращаемся к элементам объекта

C1.SetPower(150); // через имя объекта, поэтому используем

C1.SetVolume(60); // точку (.).Получить или изменить значение

C1.SetColor("Red"); // элемента со спецификатором private можно

// только через обращение к соответствующим

// методам (SetVolume, SetColor и др.)

cout<<C1.GetMark()<<" "<<C1.GetPower()<<" "<<C1.GetVolume()<<" "<<C1.GetColor()<<endl;

cout<<C2.GetMark()<<" "<<C2.GetPower()<<" "<<C2.GetVolume()<<" "<<C2.GetColor()<<endl;

Car C3[10];

string str1, str2;

int val1, val2;

cout<<"Vvedite kol-vo elementov -> ";

cin>>k;

for(int i=0; i<k; i++) {

cout<<"Enter mark -> ";

cin>>str1;

C3[i].SetMark(str1);

cout<<"Enter power -> ";

cin>>val1;

C3[i].SetPower(val1);

cout<<"Enter volume -> ";

cin>>val2;

C3[i].SetVolume(val2);

cout<<"Enter color -> ";

cin>>str2;

C3[i].SetColor(str2);

}

for(int i=0; i<k; i++) cout<<C3[i].GetMark()<<" "<<C3[i].GetPower()<<" "<<C3[i].GetVolume()<<" "<<C3[i].GetColor()<<endl;

maxpower(C3,k);

return 0;

}