#1 19-11-2012 15:59:26

adamb156

Truje dupe, ale jestem

6160986
Call me!
Zarejestrowany: 04-12-2011
Posty: 23
Punktów :   

grupa 2 gadające owoce

Jakby komuś się przydało to to jest uml od gadających owoców:
http://img713.imageshack.us/img713/1010/owoces.jpg

jakby co to metoda "przedstaw_sie()" w klasie Owoc jest metodą abstrakcyjną, natomiast ta sama metoda w klasie Jabłko jest metodą polimorficzną (virtual).
Uwaga: zmienne waga i Nazwa w zmiennej owoc powinny być private!!

To teraz czas na trochę kodu

kosz.h:

Kod:

#ifndef KOSZ_H
#define KOSZ_H
#include "owoc.h"
#include <vector>
using namespace std;
class Kosz
{
private:
    vector<Owoc*> Owoce;
public:
    Kosz();
    void dodajOwoc(Owoc* owocek);
    void przedstawOwoce();
    void podajWage();
};

#endif // KOSZ_H

kosz.cpp:

Kod:

#include "kosz.h"

Kosz::Kosz()
{
}
void Kosz::dodajOwoc(Owoc* owocek)
{
    this->Owoce.push_back(owocek);
}
void Kosz::przedstawOwoce()
{
    for(int i=0; i<this->Owoce.size();i++)
    {
        this->Owoce.at(i)->przedstawSie();
        cout<<endl;
    }
}
void Kosz::podajWage()
{
    double Waga_kosza;
    for(int i=0; i<this->Owoce.size();i++)
    {
        Waga_kosza+=this->Owoce.at(i)->zwazOwoc();
    }
    cout<<"Owoce w koszyku waza razem "<<Waga_kosza<<" kg.";
}

owoc.h:

Kod:

#ifndef OWOC_H
#define OWOC_H
#include <stdio.h>
#include <cstdlib>
#include <string>
#include <iostream>

using namespace std;

class Owoc
{
private:
    double waga;
    string Nazwa;
public:
    Owoc(double weight);
    void virtual przedstawSie()=0;
    double zwazOwoc();
};

#endif // OWOC_H

owoc.cpp:

Kod:

#include "owoc.h"

Owoc::Owoc(double weight)
{
    this->waga=weight;
}
void Owoc::przedstawSie()
{
    cout<<this->Nazwa;
}
double Owoc::zwazOwoc()
{
    return this->waga;
}

jablko.h:

Kod:

#ifndef JABLKO_H
#define JABLKO_H
#include "owoc.h"
class Jablko: public Owoc
{
public:
    Jablko(double weight);
    virtual void przedstawSie();
};

#endif // JABLKO_H

jablko.cpp:

Kod:

#include "jablko.h"

Jablko::Jablko(double weight): Owoc(weight)
{
    this->Nazwa="jabluszkiem";
}

void Jablko::przedstawSie()
{
    cout<<"jestem "<<this->Nazwa;
}

gruszka.h:

Kod:

#ifndef GRUSZKA_H
#define GRUSZKA_H
#include "owoc.h"
class Gruszka: public Owoc
{
public:
    Gruszka(double weight);
    void przedstawSie();
};

#endif // GRUSZKA_H

gruszka.cpp:

Kod:

#include "gruszka.h"
Gruszka::Gruszka(double weight): Owoc(weight)
{
    this->Nazwa="gruszeczka";
}
void Gruszka::przedstawSie()
{
    cout<<"jestem "<<this->Nazwa;
}

antonowka.h:

Kod:

#ifndef ANTONOWKA_H
#define ANTONOWKA_H
#include "jablko.h"
class Antonowka: public Jablko
{
public:
    Antonowka(double weight);
    void przedstawSie();
};

#endif // ANTONOWKA_H

antonowka.cpp:

Kod:

#include "antonowka.h"

Antonowka::Antonowka(double weight):    Jablko(weight)
{
}
void Antonowka::przedstawSie()
{
    Jablko::przedstawSie();
    cout<<" ale najlepszym";
}

no i na koniec main.cpp:

Kod:

#include <stdio.h>
#include "kosz.h"
#include "owoc.h"
#include "jablko.h"
#include "gruszka.h"
#include "antonowka.h"

int main(void)
{
    Kosz kosz;
    Gruszka *gruszka1=new Gruszka(0.25);
    Gruszka *gruszka2=new Gruszka(0.25);
    Jablko *jablko1=new Jablko(0.25);
    Antonowka *antonowka1=new Antonowka(0.25);
    kosz.dodajOwoc(gruszka1);
    kosz.dodajOwoc(gruszka2);
    kosz.dodajOwoc(jablko1);
    kosz.dodajOwoc(antonowka1);
    kosz.przedstawOwoce();
    kosz.podajWage();
}

Program działa mogą być jakieś zbędne includy tam ale to już sobie znajdźcie

Ostatnio edytowany przez adamb156 (22-11-2012 15:42:24)

Offline

 

#2 01-12-2012 20:23:00

afro_samuray_benG

Polowe rzeczy umiescile tutaj

Zarejestrowany: 23-01-2012
Posty: 30
Punktów :   

Re: grupa 2 gadające owoce

według mnie tak łatwiej, tyle że print powinnienem zrobić z owoców ale juz mi się nie chce zmieniać

#include "antonowka.h"



antonowka::antonowka(float wagAnt)
{
    this->waga=wagAnt;
   // this->imie="jablko";
}

void antonowka::print()
{
    jablko::print();
    //cout<<"jestem " <<imie<< endl;
    cout<<" |     |"     <<endl;
    cout<<" |      -rodzaju antonowka. jestem najsmaczniejsza" <<endl;

}

#ifndef ANTONOWKA_H
#define ANTONOWKA_H

#include "jablko.h"
#include <iostream>

using namespace std;

class antonowka:public jablko
{
public:
    antonowka(float wagAnt);
    void print();
};

#endif // ANTONOWKA_H

--------------------------------------------------
#include "gruszka.h"


gruszka::gruszka(float waga)
{

    this->imie=" gruszka ";
    this->waga=waga;
}



void gruszka::print()
{
    std::cout<<"jestem [gruszka] o wadze: " << waga<<" kg." << std::endl;
}

#ifndef GRUSZKA_H
#define GRUSZKA_H

#include "owoce.h"
#include <iostream>

using namespace std;

class gruszka:public owoce
{
public:
    gruszka(float waga);

    void print();
};



#endif // GRUSZKA_H
----------------------------------------------------
#include "jablko.h"

jablko::jablko()
{


}


jablko::jablko(float wagJab)
{
     this->imie=" jablko ";
    this->waga=wagJab;
}


void jablko::print()
{
    std::cout<<"jestem [jablko] o wadze: " << waga<<" kg." << std::endl;
}
#ifndef JABLKO_H
#define JABLKO_H

#include "owoce.h"
#include <iostream>

using namespace std;


class jablko:public owoce
{
public:
    jablko(float wagJab);
    jablko();
   // virtual
    void print();
};

#endif // JABLKO_H

-------------------------------------------------
#include "owoce.h"

float owoce::jakaWaga()
{
    return this->waga;
}


#ifndef OWOCE_H
#define OWOCE_H
#include <iostream>
#include <string>

using namespace std;

class owoce
{
protected:
    string imie;
    float waga;
    //kosz* koszOwocow;

public:
    //void dodajKoszWlasciciel(kosz* k);
    virtual void print()=0;
    float jakaWaga();
};

#endif // OWOCE_H

--------------------------------------------------
#include "kosz.h"

kosz::kosz(std::string nazKosz)
{
    //ow->dodajKoszWlasciciel(this);  owoce* ow
    this->nazwa_kosz=nazKosz;
    //this->owoceVector.push_back(ow);
}

void kosz::dodajOwoce(owoce* o)
{
    //o->dodajKoszWlasciciel(this);
    this->owoceVector.push_back(o);
}

float kosz::wagaOwocow()
{
    float masa=0;
    for(int i=0;i<owoceVector.size();i++)
    {
        owoce* ow=owoceVector.at(i);
        masa=masa+ow->jakaWaga();

    }
    return masa;
}

void kosz::print()
{
        std::cout<<nazwa_kosz<<std::endl<<std::endl;
        std::cout<<         "[kosz] ma [owoce](klasa) o nazwie: "<<std::endl;
        std::cout<<         "=,"  <<std::endl;
        for(int i=0; i<owoceVector.size(); i++)
        {
            owoce* o=owoceVector.at(i);
            std::cout<<     " | "<<std::endl;
            std::cout<<     "  -";
            o->print();
            std::cout<<std::endl;
        }


}


#ifndef KOSZ_H
#define KOSZ_H

#include <string>
#include <vector>
#include "owoce.h"


class kosz
{
private:
    std::string nazwa_kosz;
    std::vector<owoce*> owoceVector;

public:
    kosz(std::string nazKosz);
//owoce* ow
    void dodajOwoce(owoce* o);
    float wagaOwocow();
   void print();
};

#endif // KOSZ_H

Offline

 

Stopka forum

RSS
Powered by PunBB 1.2.23
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi

[ Generated in 0.111 seconds, 8 queries executed ]


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.analityka-med.pun.pl www.papierosy.pun.pl www.mythwaronline.pun.pl www.obpu.pun.pl www.zdhbratnieslowo.pun.pl