Projekt semestralny - obiektowy C++

Projekt semestralny - obiektowy C++
HY
  • Rejestracja:około 5 lat
  • Ostatnio:około 5 lat
  • Postów:1
0

Uszanowanko!

Mam pewien problem ze swoim kodem, a mianowicie - próbuję utworzyć metodę klasy odpowiadającą za wyświetlanie informacji w danym miejscu tablicy oraz funkcję zakończenia dodawania, która tylko sprawdza czy użytkownik chcę dalej dodawać rzeczy do bazy danych.

main.cpp

Kopiuj
#include <iostream>
 
using namespace std;
 
int main()
{
    Pojazdy p[100];
 
    for (int i = 0; i <= 9; i++)
    {
        p[i].dodaj();
 
        cout << "Czy chcesz zakonczyc dodawanie? Jesli tak, wcisnij Y/N: ";
 
        cin >> p[i].z_dod;
 
        if (p[i].z_dod== "Y")
        {
            cout << "Zakonczono dodawanie";
            return 0;
        }
        else if(p[i].z_dod == "y")
        {
            cout << "Zakonczono dodawanie";
            return 0;
        }
        else
        {
            continue;
        }
    }
 
    p[1].wyswietl();
 
 
}

pojazdy.h

Kopiuj

#include <iostream>
 
using namespace std;
 
class Pojazdy
{
public:
    string typ;
    string marka;
    string model;
    string z_dod;
    int ilosc;
    int cena;
 
    void dodaj();
    void usun();
    void wyswietl();
 
};

pojazdy.cpp

Kopiuj

#include "pojazdy.h"
 
#include <iostream>
 
using namespace std;
 
 
 
void Pojazdy::dodaj()
{
    cout << "DODAWANIE POJAZDU..." << endl;
    cout << "Podaj typ pojazdu:";
    cin >> typ;
 
    cout << "Podaj marke pojazdu: ";
    cin >> marka;
 
    cout << "Podaj model pojazdu: ";
    cin >> model;
 
    cout << "Dodaj cene pojazdu: ";
    cin >> cena;
 
}
 
void Pojazdy::wyswietl()
{
 
        cout << "Dostepne pojazdy to:" << endl;
        cout << p[i].typ << "  ||  " << p[i].marka << "  ||  " << p[i].model << "  ||  " << p[i].cena;
}

Przechodząc do sedna, jak mogę przenieść cały kod ze sprawdzenia "zakończenia dodawania" do funkcji tak, by dalej on korzystał z tablicy Pojazdy p[100] oraz jak ugryzć to wyświetlanie zawartości, również tablicy klas Pojazdy p[100]. Ah, no i byłbym wdzięczny za jakikolwiek kod odnośnie usuwania danego pojazdu z konkretnego miejsca w tablicy jako funkcję(metodę klasy) oraz jakąś propozycję do tego, w jaki sposób mógłbym użyć tu przeładowania funkcji.

Z góry dzięki za wszystkie odpowiedzi!

kaczus
  • Rejestracja:około 10 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Łódź
  • Postów:1402
3

no return po zakończono dodawanie powoduje wyjście z programu w tym wypadku....
Druga sprawa, co to ma wspólnego z obiektowością? To, że używasz klasy to nie znaczy, że jest to obiektowość.
Gdzie jest rozgraniczenie interface'ów - sposób wprowadzania to niezależna operacja od samych danych powinna być.
Dane bezpośrednie raczej powinny być ukryte, a nie wszystko public.

Jesli chcesz usuwać, masz 2 wyjścia:

  1. korzystać z tablic dynamicznych używając np vectorów,
  2. jeśli chcesz tablicę statyczną, to musisz oznaczać, czy obiekt jest aktywny czy nie.

Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 2 miesiące
  • Postów:3561
4
  1. Programowanie obiektowe, to nie tylko "jakaś" klasa, ale klasa(y) z zakresem odpowiedzialności. Na pewno nie jest odpowiedzialnością klasy Pojazd decyzja o zakończeniu dodawania.
  2. Jak już zauważyłeś, zmieniłem i ty zmień Pojazdy na liczbę pojedynczą.
  3. Być może jest sens na klasę "zbiorową", nazywała by się w liczbie mnogiej i zawierała kontener. w niej metoda WprowadzXxxxxxx w mojej opinii moze odpowiadać za koniec

Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.