C++ klasy

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
bartek4833
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 29 gru 2007, 14:15
Płeć: Mężczyzna
Wersja Ubuntu: 7.04
Środowisko graficzne: GNOME
Kontakt:

C++ klasy

Post autor: bartek4833 »

Witamm

Czy ktos by mogl rzucic okiem czy dobrze napisalem klase? Dopiero sie ucze wiec prosze o wyrozumialosc

Zdefiniuj klasę prostokat, która powinna zawierać:
* pola prywatne typu całkowitego:
- długości boków prostokąta
- kolor wypełnienia
konstruktor bezparametrowy inicjujący wartość początkową pola prostokąta (dowolnie ustaloną)
konstruktor z parametrami długość, wysokość.
* metody publiczne:
- Daj_Dlugosc(..), zwracającą długość prostokąta
- Daj _Wysokosc(..), zwracającą wysokość prostokąta

Kod: Zaznacz cały

class prostokat
{
    private:
            int bok_1;
            int bok_2; 
    public:
           prostokat(): bok_1(0), bok_2(0) {};
           prostokat(int dlugosc, int wysokosc): bok_1(dlugosc), bok_2(wysokosc) {};
           
           int dajDlugosc(int dlug_prost)
           {
               bok_1 = dlug_prost;
               return bok_1;
           }
           
           int dajWysokosc(int wys_prost)
           {
               bok_2 = wys_prost;
               return bok_2;
           }
};
Awatar użytkownika
Tares
Sędziwy Jeż
Sędziwy Jeż
Posty: 55
Rejestracja: 05 maja 2006, 19:58
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: Unity
Architektura: x86_64
Kontakt:

Odp: C++ klasy

Post autor: Tares »

Tak trudno wrzucić to w kompilator i sprawdzić ? :/ Działać działa, ale wg mnie to tak mało przejrzyście jest napisane.

Ja bym to zrobił tak :

Kod: Zaznacz cały

#include <iostream>

using namespace std;

class prostokat {
	private:
		int bok_1;
		int bok_2; 
	public:
		prostokat();
		prostokat(int x, int y);
		int getH();
		int getZ();
};
prostokat::prostokat(){
	bok_1 = 0;
	bok_2 = 0;
}
prostokat::prostokat(int x, int y) {
	bok_1 = x;
	bok_2 = y;
}
int prostokat::getH() {
	return bok_1;
}
int prostokat::getZ() {
	return bok_2;
}
int main () {

	prostokat jeden;
	prostokat dwa(4,6);

	cout<<jeden.getH()<<endl;
	cout<<jeden.getZ()<<endl;
	cout<<dwa.getH()<<endl;
	cout<<dwa.getZ()<<endl;

	return 0; 
}

^_^;
Awatar użytkownika
bartek4833
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 29 gru 2007, 14:15
Płeć: Mężczyzna
Wersja Ubuntu: 7.04
Środowisko graficzne: GNOME
Kontakt:

Odp: C++ klasy

Post autor: bartek4833 »

Ok dzieki za sprawdzenie :)

PS: Nie chodzilo mi czy dziala czy nie ale czy dobrze jest napisana (zgodnie z trescia). ; )
ccl
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 22 lis 2009, 13:52
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: C++ klasy

Post autor: ccl »

1) brak koloru wypelnienia
2) te funckje daj_dlugosc i daj_wysokosc to lipa, "daj" to nie "ustaw" wartosc jak parametr tylko zwroc poporstu wartosc bez zadnych zmian wewnatrz
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: C++ klasy

Post autor: beluosus »

Jeszcze konstruktor można podrasować - dodać wartości domniemane, a usunąć konstruktor bez parametrów.

Kod: Zaznacz cały

	public:
		prostokat(int x = 0, int y = 0);
Funkcje w ciele klasy są inline. Zwykle akcesory (funkcje zwracające przeważnie wartości prywatne) zapisujemy w ciele klasy, bo to tylko return.

Kod: Zaznacz cały

		int getH() { return bok_1; };
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
ccl
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 22 lis 2009, 13:52
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: C++ klasy

Post autor: ccl »

no to zalezy... ja wole jak ktos mi zrobi funkcje inline w pliku .cpp niz gdyby mial cale cialo wrzucac do .h - po co smiecic? .h powinien zawierac sam interfejs
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: C++ klasy

Post autor: beluosus »

ccl pisze:no to zalezy... ja wole jak ktos mi zrobi funkcje inline w pliku .cpp niz gdyby mial cale cialo wrzucac do .h - po co smiecic? .h powinien zawierac sam interfejs
Nie powiedziałem, że nie. Napisałem, że zwykle. Tutaj raczej wziąłem pod uwagę fakt, że robi to w jednym pliku... A jak podniesie swoje umiejętności programistyczne to zrobi jak mu będzie wygodniej.
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 13 gości