Projekt semestralny - obiektowy C++

Odpowiedz Nowy wątek
2020-03-26 11:32

Rejestracja: 1 tydzień temu

Ostatnio: 1 tydzień temu

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!

Pozostało 580 znaków

2020-03-26 12:00

Rejestracja: 5 lat temu

Ostatnio: 1 dzień temu

Lokalizacja: Łódź

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

Pozostało 580 znaków

2020-03-26 12:23

Rejestracja: 1 rok temu

Ostatnio: 59 sekund temu

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
edytowany 1x, ostatnio: AnyKtokolwiek, 2020-03-26 12:49

Pozostało 580 znaków

Odpowiedz

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