Cześć :)
Wykouję zadanie , które z tego co zrozumiałem ma przedstawiać klasę "Lampa" z posiadaniem jako składowe dwóch obiektów klasy "Zarowka" (wygląda na to, że bez dziedziczenia).
Oto treść zadania:
Żarówka. Ma prywatne pole moc typu int. Konstruktor umożliwia ustawienie wartości tego pola. W przypadku niepodania wartości w konstruktorze przyjmuje się domyślnie 100. Ma publiczną funkcję UstawMoc która ustawia to pole na przekazaną w argumencie wartość, oraz publiczną funkcję OdczytajMoc która zwraca wartość tego pola.
Lampa. Ma dwa prywatne pola typu Żarówka. Ma publiczną funkcję UstawMocLampy ustawiającą moc obu żarówek na zadaną wartość. Ma funkcję Wyświetl wyświetlającą moc żarówek na konsoli. Klasa zawiera funkcje wymagane do jej poprawnej pracy (konstruktor kopiujący, operator przypisania, destruktor)
Zaprezentować przykłady działania.
Adnotacje:
- wypisać błąd jeżeli moc żarówki byłaby większa niż 120
- opcjonalnie można zastąpić pola prywatne "Zarowek" kolekcją (tego drugiego jeszcze praktycznie nie używałem w praktyce)
Oto mój kod z interfejsu (plik elektryka.h):
#ifndef ELEKTRYKA_H_
#define ELEKTRYKA_H_
class Zarowka
{
public:
int m_power;
public:
Zarowka(int power = 100);
void setPower(int user_argument);
void readPower();
~Zarowka();
};
class Lampa
{
private:
Zarowka one, two;
public:
Lampa();
Lampa(int powerForBulbs) : one(powerForBulbs){};
void setPowerLamp(int user_argument);
void readPowerLamp();
~Lampa();
};
#endif
I początek implementacji dla samej tylko zarowki:
#include <iostream>
#include "elektryka.h"
Zarowka::Zarowka(int power )
{
m_power = power;
}
void Zarowka::setPower(int user_argument)
{
m_power = user_argument;
}
void Zarowka::readPower()
{
std::cout << "Power of the bulb: " << m_power << std::endl;
}
Tak więc parę pytań na start. Jak powinien wyglądać prototyp i implementacja dla konstruktora lampy, aby prawidłowo inicjalizować obydwa obiekty klasy "Zarowka"? Zastanawia mnie fragment o poprawnym rozpisaniu destruktora, ponieważ nie wygląda na to, aby było trzeba mu poświęcać większej uwagi (brak jakiejkolwiek alokacji pamięci itd.). Z góry dziękuję za wszelkie odpowiedzi. :)