Obiekt, klasa, metoda - Learning

0

Witam, czy kod który napisałem ma ręce i nogi i oddaje sens tworzenia klas,obiektów,metod? Jeżeli macie jakieś ale do składni czy czegokolwiek to jestem otwardy na konstruktywną kryykę. (Zaczynam uczyć się obiektówki - C++ , C#)

 
#include <iostream>

using namespace std;

class Robot
{
public:     // ATRYBUTY //

    string marka;
    string nazwa;
    int przebieg; // W ROBOCZO-GODZINACH* //
    int bateria;  // DŁUGOŚĆ PRACY NA 1 BATERII* //
    string kolor;  // KOLOR ROBOTA* //
    int waga;  // WAGA ROBOTA* //

    void dodaj_robota()
    {
        cout << "DODAWANIE NOWEGO ROBOTA...\n";
        cout << "Podaj marke: \n";
        cin >> marka;

        cout << "Podaj nazwe: \n";
        cin >> nazwa;

        cout << "Podaj przebieg robota: \n";
        cin >> przebieg;

        cout << "Podaj dlugosc pracy na jednej baterii: \n";
        cin >> bateria;

        cout << "Podaj kolor: \n";
        cin >> kolor;

        cout << "Podaj wage - w kilogramach: \n";
        cin >> waga;
    }

    void odpowiedzi_marka()
    {
        if (marka == "sony" || marka =="SONY") cout << "Podales marke: "<<marka<<" Skusiles sie na kupno bardzo porzadnej maszyny!\n";
        else if(marka != "sony" || marka != "SONY") cout <<"Podales marke: "<<marka<<" Niestety nie mamy takiego w bazie danych!\n";
        else cout <<" Nie ma takiego robota w bazie!\n";
    }

    void odpowiedzi_przebieg()
    {
       if(przebieg < 10) cout <<"Twoj przebieg wynosi: "<<przebieg<<" Młodzian!\n";
       else if (przebieg >=10 && przebieg <= 200000) cout <<"Przebieg wynosi: "<<przebieg<<" No nie jest juz to nastolatek!\n";
       else if (przebieg >200001) cout <<"Przebieg = "<<przebieg<< " Chyba juz czas na nowego robota przyjacielu!\n";
    }
};

int main()
{
    Robot r1;
    r1.dodaj_robota();
    r1.odpowiedzi_marka();
    r1.odpowiedzi_przebieg();

    Robot r2;
    r2.dodaj_robota();
    r2.odpowiedzi_marka();
    r2.odpowiedzi_przebieg();
}

0

Poczytaj o konstruktorach i hermetyzacji.

1

Ziemniaki, kotlet, surówka- Eating

3

Jw., czyli:

  1. Konstruktory
  2. Gettery/settery
  3. Wywalenie cin/cout z klasy
  4. Hermetyzacja pól
  5. Można dać klasę w osobnych plikach, nagłówkowy+cpp
  6. Porównanie stringów realizować przez metody z std::string.
  7. Nazewnictwo - dodaj_robota tak naprawdę wprowadza jego dane, a nie dodaje nowego do żadnej kolekcji (+ można już przestawiać się na angielski).

Poza tym poczytać można kawałki Praty, Effective c++ Meyersa i idealnie do pisanie dobrego kodu - Clean Code.

1
  1. polskie nazwy zmiennych/klas
  2. dodaj robota powinno przyjmowac argument typu robot. Od funkcji Dodaj robota nie spodziewam sie by chciala ode mnie jakies informacje i wyswietlala jakeis informacje. Poczytaj chociazby o MVC (mozesz spojrzec tez na kurs ktory pisze to po krotce tam to wyjasnilem)
  3. Bez sensu komentarze, skoro potrzebne sa takie komentarze typu w robotogodzinach to znaczy, ze cos jest nie tak.
  4. zebralbym cechy robota w jedna klase typu RobotData
  5. W odpowiedzi_marka() else nie ma sensu
  6. formatowanie (nie lubie jednolinijkowcow i nikt mnie nie przekona ze sa dobre, tym bardziej jak brakuje {})
  7. Czemu Robot sprawdza samego siebie i ma jakas logike oceniania siebie?
  8. Poczytaj o SOLID
  9. Poczytaj o DRY
  10. Poczytaj o Rule Of Three/Five/Zero
0

Dziękuje za podpowiedzi, na dzisiaj miałem właśnie zaplanowane wątki związane z konstr, destr i hermetyzacją :)

Zabieram się do pracy , pzdrawiam :)

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