• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Co sądzicie o moim programie

Object Storage Arubacloud
–1 głos
610 wizyt
pytanie zadane 16 sierpnia 2016 w C i C++ przez Krzysiek Rojowski Obywatel (1,110 p.)

Co sądzicie o moim programie? Wiem że jest banalny, ale uczę się dziedziczenia i ogólnie klas i chciałem to jakoś zgarnąć w jedno. Dlatego nie piszcie mi komentarzy typu: "Idź lepiej ucz się C++".

 

#include <iostream>
#include <cstdlib>

using namespace std;

class NWD
{
protected:
    int lb1, lb2, maxx, nwd;

public:
    void funk()
    {
        cout<<"Podaj 2 liczby(calkowite): ";
        while(!(cin>>lb1>>lb2))
        {
            cout<<"Blad wczytywania liczby!\n";
            exit(0);
        }

        if(lb1>lb2)  {maxx = lb1;}

        else  {maxx = lb2;}

        for(int i=1; i<=maxx; i++)
        {
            if((lb1%i==0) && (lb2%i==0))
            {
                nwd = i;
            }
        }
        cout<<"\nNWD liczb "<<lb1<<","<<lb2<<" to: "<<nwd<<'\n';
    }
};

class NWW :public NWD
{
private:
    int nww;

public:
    void fun()
    {
        nww = (lb1*lb2)/nwd;
        cout<<"\nNWW liczb "<<lb1<<","<<lb2<<" to: "<<nww<<'\n';
    }
};

int main()
{
    NWW show;
    show.funk();
    show.fun();
}

 

2 odpowiedzi

+4 głosów
odpowiedź 16 sierpnia 2016 przez Ehlert Ekspert (212,790 p.)
  1. O chłopie. NWW i NWD mogą co najwyżej razem dziedziczyć z klasy liczba czy coś takiego. Ale że jedno z drugiego? no
  2. Czysty kod leży. Przeczytaj jakie są konwencje nazewnictwa. Funk znaczy tyle co wszystko.
  3. Nie masz zdefiniowanych ani co gorsza zdeklarowanych konstruktorów ani, destruktorów. Nie wiesz zatem, że tworząc instancję NWW wywołujesz konstruktor NWD. Niejawnie ale jest.
  4. I jeszcze raz konstruktora. Tam się nadaje wartości cechom klasy. 
komentarz 16 sierpnia 2016 przez Krzysiek Rojowski Obywatel (1,110 p.)
Jeżeli nie chce to, przecież nie muszę mieć konstruktorów ani destruktorów. A klasa dziedziczy ze tej drugiej bo używam wzoru: NWW(a, b) = (a*b)/NWD(a,b).
komentarz 16 sierpnia 2016 przez Ehlert Ekspert (212,790 p.)

To że wzór tak wygląda to nie znaczy masz tak dziedziczyć. To jest błąd projektowy. Kaczka dziedziczy z klasy Ptak, gdyż kaczka jest ptakiem. W tym przypadku NWW to jest jest NWD. Możesz zawrzeć instancje tych obiektów w 3 klasie, wrapperze całego programu.

Jeżeli nie chce to, przecież nie muszę mieć konstruktorów ani destruktorów.

Po to one są żeby z nich korzystać w prawidłowy sposób. Pytałeś co sądzimy o Twoim kodzie, więc mówię Ci, że ani to nie jest poprawne, ani estetyczne.  

komentarz 16 sierpnia 2016 przez Krzysiek Rojowski Obywatel (1,110 p.)
To dlaczego działa w takim razie skoro program jest blędny? :)
1
komentarz 16 sierpnia 2016 przez Grzyboo Nałogowiec (28,860 p.)

Wiesz, przypisać liczbę można na wiele sposobów.

int x = 5;
int x = (int)round(5.1242);

Obydwa zapisy dają x równe 5, co nie znaczy, że drugi jest dobry.

Jeżeli masz podejście, że kompiluje się to jest dobre to zmień to podejście albo porzuć programowanie. Zrób to dla ludzi, którzy będą musieli z Tobą pracować.

1
komentarz 16 sierpnia 2016 przez konrad99 Gaduła (4,090 p.)
Działa bo czemu miało by nie działać ale to są błędy projektowe.

1 Dziedziczy się (publicznie) gdy coś jest rodzajem czegoś np samochód jest rodzajem auta i dziedziczy np składową pojemność silnika która jest wspólna dla obydwu ,zawiera np 4 koła co jest przykładem relacji ma coś.Ale takie dziedziczenie jakie ty proponujesz nie jest poprawne bo dziedziczysz tylko po to żeby dziedziczyć (sztuka dla sztuki).

2 Nazywaj swoje zmienne,funkcje,klasy tak aby jak najlepiej oddawały znaczenie tego co znaczą ,robią itd.

3  I oczywiście konstruktory podzielam uwagi Ehlert
komentarz 16 sierpnia 2016 przez Krzysiek Rojowski Obywatel (1,110 p.)
+Grzyboo Człowieku jeżeli ty widząc jakiś program który jest dla ciebie idiotyczny to nie pisz osobom słabszym w programowaniu,żeby przestały programować, bo są do dupy. Ja mam 14 lat i od niedawna uczę się programować.Nie jestem tak dobry jak ty. Moje podejście na razie jest jakie jest bo jeszcze się uczę. Jeżeli naprawde byłbyś dobrym programistą to wiedziałbys że początki bywają trudne i nie wszystko przychodzi od razu. Ale jak widzę już pozjadałeś wszystkie rozumy. Czy radą jest żebym porzucił programowanie? Bardzo to lubię i narazie nie ma widoków żebym to porzuciał. Także przed napisaniem czegoś radzę troche pomyśleć a nie pisać głupot. Wątpię czy 14-latki w ogóle pracują....
komentarz 16 sierpnia 2016 przez Grzyboo Nałogowiec (28,860 p.)

Ale ja jestem nowicjuszem. Jednak Twoje podejście "To dlaczego działa w takim razie skoro program jest blędny? :)" jest karygodne. Najpierw zaproponowałem inne rozwiązanie, zmianę podejścia. Jeżeli tego nie zrobisz, to tak, sądzę że powinieneś przestać.

+1 głos
odpowiedź 16 sierpnia 2016 przez afferu Mądrala (5,220 p.)
1. NWW, NWD to materiał bardziej na funkcję a nie na aż 2 xD klasy, w najgorszym razie możesz użyć struktury. Lepiej skupić się na samym modelowaniu obiektów w stylu [obiekt->pojazd->samochód] etc...

2. Naucz się podstawowych konwencji nazewnictwa pól i metod.

3. Korzystaj z referencji języka i klas, najlepiej po angielsku.

Podobne pytania

+1 głos
2 odpowiedzi 336 wizyt
pytanie zadane 18 sierpnia 2016 w C i C++ przez Krzysiek Rojowski Obywatel (1,110 p.)
0 głosów
2 odpowiedzi 437 wizyt
pytanie zadane 8 sierpnia 2019 w C i C++ przez Andre78 Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 396 wizyt
pytanie zadane 26 września 2015 w C i C++ przez MOTUV Nowicjusz (190 p.)

92,624 zapytań

141,482 odpowiedzi

319,822 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...