Konstruktor klasy C++

0

Witam, mam nubskie pytanie, pisze sobie klasę do obsługi urządzeń, konkretnie pomp na instalacjach CO. Powiedzmy ze mam kilka typów pomp, jedne służą do grzania podłogi, inne do instalacji a jeszcze inne do bojlera - zasada ich działania nieco się różni.

Wprowadziłem do klasy składnik

	enum TypPompy
	{
		PODLOGOWA,
		COCWU,
		CYRKULACYJNA,
	}; 

który to podaje się w konstruktorze (wraz z innymi danymi) i na jego podstawie będzie ustalona dalsza logika działania pompy.

Problem polega na tym że pompa np CO wymaga do pracy ustalenia nieco innych składników niż PODLOGOWA, a zatem moje pytanie brzmi, czy da się tak przeładować konstruktory, żeby przy ustawieniu typPompy na np COCWU zadziałał konstruktor 1 a przy ustawieniu na PODLOGOWA - konstruktor 2. Chciałbym żeby to się działo automatycznie przy inicjalizacji obiektu.

0

Nie można if'a? Z konstruktorami - nie da rady.
PS. Da - patrz niżej

0

A może polimorfizm? Abstrakcyjna klasa bazowa Pompa i dzieci - PompaX, PompaY, PompaZ. Jeżeli znajdziesz się w sytuacji, gdzie rzeczywiście potrzebowałbyś metody TypPompy getType(), to zamiast tego możesz użyć Visitor Pattern.

0

Z if by przeszło, ale jedna pompa wymaga np 3 skladników a inna 7, wiec konstruktor by wyglądał np tak

CPump p1(CPump::COCWU,40,40,0,0,0,0,0)

czyli dziwnie :)

Co do polimorfizmu, to chyba nie mój poziom wiedzy, bo słysze to pojecie po raz pierwszy (max. drugi:P) zaraz sie dowiem co to, ale przyszło mi na myśl żeby wykorzystać dziedziczenie. Klasa rodzic CPump ze wspólnymi składnikami i metodami + 3 klasy dzieci. Przy okazji zaoszczędzi się trochę pamięci, bo obiekt nie będzie przechowywał nieużywanych składników.

Co myślicie?

PS. w sumie brzmi w sumie jak polimorfizm, tylko nie wiem co to "abstrakcyjna klasa" :)

0

Szczerze mówiąc dziwi mnie, że sajmon pisze poważny program w C++, a nigdy nie słyszał pojęcia "polimorfizm", które przecież się do świata C++ nie ogranicza. -

To bardziej zadanie do nauki obiektowości z książką w ręku, niż poważny program :) możliwe że ten kod nigdy nie zostanie użyty - chociaż dołożę starań aby się nie zmarnował.

1 użytkowników online, w tym zalogowanych: 0, gości: 1