Projekt semestralny - obiektowy C++

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

#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


#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


#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!

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.
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

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