zad-3-J.G

mail@pastecode.io avatar
unknown
c_cpp
2 years ago
3.5 kB
2
Indexable
Never

#include <iostream>

#include <stdlib.h>
#include <string.h>

using namespace std;

/*

     1) Jak wygląda zapis do obiektu?

        - Zapisujemy bezpośrednio dane do obiektu.



     2) Czy zapis jest podobny do struktury?

         - Tak



     3) Kto może zapisywać do obiektu?

         - W przypadku pól publicznych, każdy.



     4) Różnice między klasą a strukturą

         - Pola klasy są domyślnie prywatne. (hermetyzacja)



     5) Zastanowić się czym klasa różni się w tym wypadku od struktury? Mamy
   tylko dane, cechy, atrybuty. Jakaś różnica? Po co nam zatem obiekty?

       - Mozna je tworzyc n razy.



     6) Jak wygląda odczyt, i kto może czytać z obiektu?

         - Pola są publiczne wiec odczyt może się odbywać bezpośrednio z obiektu

         - Każdy może czytać z obiektu



     7) Jak tworzone i obsługiwane są zmienne obiektowe tego typu?

         - Zmienna statyczna inicjalizująca się w momencie deklaracji, w
   przeciwieństwie do zmiennej dynamicznej, programista nie ma kontroli nad tym
   kiedy taka zmiena zostanie zniszczona.



     */

class Postac {
 public:
  string rasa;
  string imie;
  int obrona;
  int atak;
  int szybkosc;

  void odczyt() {
    cout << "Gatunek: " << rasa << endl;
    cout << "Imię: " + imie << endl;
    cout << "Obrona: " + to_string(obrona) << endl;
    cout << "Atak: " + to_string(atak) << endl;
    cout << "Szybkość: " + to_string(szybkosc) << endl;
  }

  void ustawRase(string wybranaRasa) { rasa = wybranaRasa; }

  void pokazDane() {
    /*
     1) Czy metoda ma dostęp do wnętrza klasy?
        - Tak
     2) Omówić metodykę tworzenia identyfikatorów w stylu camelCase oraz
     snake_case.
       - Identyfikatory w metodyce camelCase są tworzone w taki sposób że
     pierwsza litera każdego wyrazu np funkcji (nie licząc pierwszego) jest
     pisana z wielkiej litery, w przypadku snake_case wyrazy łączymy za pomocą _
     3) Jak działa taka metoda dodawania danych i odczytu?
       - pokazDane -> Pobiera dane następnie wyświetla za pomocą cout
       - wczytajDane -> zapisuje w klasie wartosci przekazane przez cin
     4) Omówić porządek w kodzie dzięki zamknięciu danych w obiektach.
       - Dzięki zastosowaniu klas w prosty sposób możemy porządkować logikę
     wspólną dla wielu elementów. Dodatkowo umożliwia nam segregację elementów w
     sposób logiczny i zwięzły.
     5) Sprawdzić ile pamięci zajmuje obiekt.
      - Zajmuje 64
    */
    cout << "Mój gatunek to " << rasa << endl;
    cout << "Nazywam się  " + imie << endl;
    cout << "Mam takie moce: " << endl;
    cout << " 1) Atak: " + to_string(atak) << endl;
    cout << " 2) Szybkość: " + to_string(szybkosc) << endl;
    cout << " 3) Obrona: " + to_string(obrona) << endl;
  }

  void wczytajDane() {
    cout << "Edycja danych dla " << rasa << endl;
    cout << "Wpisz Imię" << endl;
    cin >> imie;
    cout << "Wpisz Atak" << endl;
    cin >> atak;
    cout << "Wpisz Szybkość" << endl;
    cin >> szybkosc;
    cout << "Wpisz Obronę" << endl;
    cin >> obrona;
  }
};

int main() {
  Postac zwiadowca = Postac();
  zwiadowca.ustawRase("zwiadowca");
  zwiadowca.wczytajDane();
  zwiadowca.odczyt();

  Postac mag = Postac();
  mag.ustawRase("mag");
  mag.wczytajDane();
  mag.odczyt();

  Postac wojownik = Postac();
  wojownik.ustawRase("wojownik");
  wojownik.wczytajDane();
  wojownik.odczyt();

  cout << sizeof(zwiadowca);
  return 0;
}