PDA

Просмотр полной версии : Создать класс квартира, имеющая оперделённое число комнат



prikolist
02.04.2009, 19:19
Здравствуйте программисты! Подскажите пожалуйста, я новичок в С++ Builder, дали задание создать класс. Условиек внизу. Подскажите пожалуйста, как это можно реализовать на С++ Builder, дайте пожалуйста примерчик. Заранне благодарен за ответ.

Вот условие задачи:



-----------------------------------------------------------------
Создать класс квартира, имеющий площадь, определенное число комнат, этаж. Определить конструктор, деструктор и методы доступа( чтения и записи) полей класса.
Создать два производных класса:
1) Класс - однокомнатная квартира, содержащий комнату и кухню (ее площадь).
2) Класс – трехкомнатная квартира, содержащий 3 комнаты (их площади), кухню (ее площадь).
Определить конструкторы, деструкторы, методы доступа(чтения и записи) площади, этажности, количества комнат однокомнатной и трехкомнатной квартиры.
Создать экземпляры объектов всех классов.
В методах доступа к данным класса предусмотреть вывод сообщений поясняющих, метод какого класса вызывается
------------------------------------------------------------------------:)
1. Нужно создать родительский класс квартира,
в котором описать , например, два поля площадь, число комнат (к ним доступ
только
через специальные методы ( в методах должны выводится какие - либо
сообщения, чтобы было понятно, что обращаемся к объекту базового класса)
или свойства). В конструкторе родительского класса проинициализировать эти
значения 0 (или другим значением).

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


-----------------------------------------------------------------

Romeo
02.04.2009, 19:38
Перемещено из "С и С++".

Airhand
03.04.2009, 17:47
Как-то так:


class flat
{
private:
unsigned int ploshad1;
unsigned int ploshad2;
unsigned char numberOfRoom;
public:
flat(unsigned int pl1, unsigned int pl2);
virtual ~flat();

void AddRoom();
void DeleteRoom();
}

Это всё в хидере.
В cpp написать:


#include <vcl>
#include имя хидера в кавычках

flat::flat(unsigned int pl1, unsigned int pl2) : ploshad1(pl1), ploshad2(pl2), numberOfRoom(0) {}
flat::~flat()
{
}
void flat::AddRoom()
{
++numberOfRoom;
cout << "add room";
}
void flat::DeleteRoom()
{
--numberOfRoom;
cout << "delete room";
}

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


#include имя хидера с родительским классом в кавычках
class triflat : public flat
{
private:
unsigned short floor;
public:
triflat(unsigned int pl1, unsigned int pl2);
~triflat();

void MakeFloor(const unsigned short floorNuber);
}

В исходнике:


#include <vcl>
#include имя хидера в кавычках

triflat::triflat(unsigned int pl1, unsigned int pl2) : flat(pl1, pl2), floor(0)
{}
triflat::~triflat()
{
}
triflat::MakeFloor(const unsigned short floorNuber)
{
floor = floorNumber;
cout << "make floor";
}

Писал кад на сайте, так что может не компилиться. Пункт 3 не делал.