Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoc oko get i set metoda

[es] :: C/C++ programiranje :: C/C++ za početnike :: Pomoc oko get i set metoda

[ Pregleda: 4131 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.zrlocal.net.



+5 Profil

icon Pomoc oko get i set metoda26.10.2008. u 20:06 - pre 188 meseci
Da li mozete da mi objasnite kako rade sledece funkcije:

Code:

double getX() const{ return x;}
void setX (double xx) {x=xx;}


get mi je i jasno nego zasto se set funkcija bas ovako pise?

I jos nesto me zanima.
Code:

enum States {.....}
enum Colors{.......}
.
.
.
.
States getState() const;
Colors getColor() const;


Kad napisem ovo enum da li to u stvari znaci da sam ja u stvari napravio neki tip kao npr double?
I zasto sad get funkcija nema return?
Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pomoc oko get i set metoda26.10.2008. u 20:32 - pre 188 meseci
Citat:

get mi je i jasno nego zasto se set funkcija bas ovako pise?

Pretpostavljam da mislis na const iza deklaracije funkcije...

What is a "const member function"?
http://www.parashift.com/c++-f...nst-correctness.html#faq-18.10
(i u domacoj literaturi, get i set se nazivaju inspectori i mutatori, pogledaj u primeru)

Ukratko, to je napomena kompajleru da je namera da se ne menja stanje objekta, vec samo iscitavaju vrednosti. Ili, u timskom radu, neko ciji je posao samo projektovanje neke klase time kaze onome ko pise implementaciju da ne sme u toj metodi nikako da menja stanje objekta.

Citat:

Kad napisem ovo enum da li to u stvari znaci da sam ja u stvari napravio neki tip kao npr double?
I zasto sad get funkcija nema return?


Get ima return u primeru, vraca jednu od enum-erisanih vrednosti. Time se sprecava vracanje nekih drugih vrednosti sem onih koje su eksplicitno dozvoljene.

Nekada se to ovako radilo:
#define PROLECE 0
#define LETO 1
#define JESEN 2
#define ZIMA 3

... ali enum je mnogo prirodnije:
enum { PROLECE, LETO, JESEN, ZIMA };

enum je zapravo interno integer.
Obavezno pogledaj i ovaj thread o enum-u, nekim njegovim ogranicenjima, alternativnim resenjima i sl:
http://www.elitesecurity.org/t237978

 
Odgovor na temu

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.zrlocal.net.



+5 Profil

icon Re: Pomoc oko get i set metoda26.10.2008. u 20:37 - pre 188 meseci
OK hvala ti na odgovoru.

Sad imam jedan problem:
Koristim code::blocks za programiranje. Kad kompajliram program stalno mi izbacuje greku "multiple types in one declaration".
Greska se nalazi na poslednjoj liniji koda za klasu "};"

Sve sam pokusao i nikako da nadjem gde je greska.
Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pomoc oko get i set metoda26.10.2008. u 20:41 - pre 188 meseci
Moras da pokazes minimalan kod koji proizvodi tu gresku pri kompajliranju.
 
Odgovor na temu

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.zrlocal.net.



+5 Profil

icon Re: Pomoc oko get i set metoda26.10.2008. u 20:50 - pre 188 meseci
Code:

#ifndef SEMAFOR_HPP_INCLUDED
#define SEMAFOR_HPP_INCLUDED

enum States { sOFF, sON, sOUT, sBLINK }

enum Colors { cNONE, cRED, cYELLOWRED, cGREEN, cYELLOW, cBLINK }

class Semafor{

    private:
        States state;
        Colors color;

    public:
        Semafor();

        //void setState( States )
        States getState() const;
        //void setColor( Colors )
        Colors getColor() const;


        bool turnOn();
        bool turnOff();
        bool outOfOrder();
        bool repair();
        bool turnBlink();
        bool changeColor();


};



#endif // SEMAFOR_HPP_INCLUDED


Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pomoc oko get i set metoda26.10.2008. u 21:19 - pre 188 meseci
Kod mene Code::Blocks sa GCC kompjalerom bez problema prevodi kod koji si dao.

Proveri jos jednom imas li:
- tacku-zarez iza klase
- stavi tacku-zarez i iza zatvorenih zagrada od enum
- mozda da uklonis // SEMAFOR_HPP_INCLUDED iz #endif, mada i to mi je uvrnuto.
 
Odgovor na temu

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.zrlocal.net.



+5 Profil

icon Re: Pomoc oko get i set metoda26.10.2008. u 21:25 - pre 188 meseci
Kad stavim ; kod enum bude jos gore.
evo i ostatka koda:
Code:

#include <iostream>
#include "semafor.hpp"

using namespace std;

void printSem (const Semafor &s)
{
    cout<<endl;
    cout<<"Status: ";
    switch(s.getState()){
        case sOUT: cout<<"Pokvaren"; break;
        case sOFF: cout<<"Iskljucen"; break;
        case sON: cout<<"Ukljucen"; break;
        case sBLINK: cout<<"Blink"; break;
}

cout<<endl;
cout<<"Boja: ";
switch(s.getColor()){
    case cNONE: cout<<"cNONE"; break;
    case cRED: cout<<"Crvena"; break;
    case cGREEN: cout<<"Zelena"; break;
    case cBLINK: cout<<"Zuto-trepcuce"; break;
    case cYELLOWRED:
    case cYELLOW: cout<<"Zuta"; break;
}
}

char meni(){
    char rez;

    cout<<"\n\nMENI:\n";
    cout<<"\n\t1. Ukljuci semafor";
    cout<<"\n\t2. Iskljuci semafor";
    cout<<"\n\t3. Pokvari semafor";
    cout<<"\n\t4. Pokvari semafor";
    cout<<"\n\t5. Postavi trepcuce svetlo";
    cout<<"\n\t6. promeni boju";
    cout<<"\n\t7. Kraj rada";
    cout<<"\n\n";
    cin>>rez;
}

int main()
{
        Semafor s;
        char odg;
        bool result;
        do{
            printSem(s);
            odg=meni();
            switch(odg){
                case '1': result=s.turnOn(); break;
                case '2': result=s.turnOff(); break;
                case '3': result=s.outOfOrder(); break;
                case '4': result=s.repair(); break;
                case '5': result=s.turnBlink(); break;
                case '6': result=s.changeColor(); break;
            }
            cout<<(result==true?"Uspelo\n":"Nedozvoljeno!\n");
        }while(odg!='7');
        return 0;
}



i

Code:

#ifndef SEMAFOR_CPP_INCLUDED
#define SEMAFOR_CPP_INCLUDED

#include "semafor.hpp"

Semafor::Semafor(){
    state = sOFF;
    color = cNONE;
}

/*
    void Semafor::setState( States newState){
        state = newState;
    }

    void Semafor::setColor( Colors newColor){
        color = newColor;
    }
*/

States Semafor::getState() const {return state;}
Colors Semafor::getColor() const {return color;}

bool Semafor::turnOn() //funkcija turnOn pripada klasi Semafor
{
    if(state==sOFF)
    {
        state=sON;   //ako je off onda prebaci u on
        color=cRED;  //i dodaje mu boju red
        return true; //ako je sve dobro vraca true
    }
    return false;    //ako nije dobro vraca false
}

bool Semafor::turnOff()
{
    if (state==sON || state==sBLINK)
    {
        state=sOFF;
        color=cNONE;
        return true;
    }
    return false;
}

bool Semafor::outOfOrder()
{
    state=sOUT;
    color=cNONE;
    return true;
}

bool Semafor::repair()
{
    if (state==sOUT)
    {
        state=sOFF;
        color=cNONE;
        return true;
    }
    return false;
}

bool Semafor::turnBlink()
{
    if (state==sOFF)
    {
        state=sBLINK;
        color=cBLINK;
        return true;
    }
    return false;
}

bool Semafor::changeColor()
{
    if (state==sON)
    {
        switch(color)
        {
            case cNONE:
            case cRED:          color=cYELLOWRED;   break;
            case cYELLOWRED:    color=cGREEN;       break;
            case cGREEN:        color=cYELLOW;      break;
            case cYELLOW:       color=cRED;         break;

        }
        return true;
    }
    return false;
}




#endif // SEMAFOR_CPP_INCLUDED


Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pomoc oko get i set metoda27.10.2008. u 06:49 - pre 188 meseci
Probao sam tvoj program i on se kompajlira bez problema uz izmene koje sam ti vec naveo ("- stavi tacku-zarez i iza zatvorenih zagrada od enum"):
Code:

// ...
enum States { sOFF, sON, sOUT, sBLINK };
enum Colors { cNONE, cRED, cYELLOWRED, cGREEN, cYELLOW, cBLINK };
// ...

Ima i nekoliko Warninga koje treba resiti.

Dakle, imas tri fajla:

1. main.cpp
Resavanje prvog warninga: Imas funkciju char meni() koja ne vraca nikakvu vrednost. Dakle, na kraju treba: return(rez);

2. semafor.cpp
Resavanje drugog Warninga: U metodi bool Semafor::changeColor(), nigde nije tretiran slucaj clBLINK. Vidi sta ces s time.

3. semafor.hpp
Ukloni ovo, to ne treba u CPP modulima:
#ifndef SEMAFOR_CPP_INCLUDED
#define SEMAFOR_CPP_INCLUDED
// ...
#endif // SEMAFOR_CPP_INCLUDED

[Ovu poruku je menjao X Files dana 27.10.2008. u 09:28 GMT+1]
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
91.148.114.*



+7 Profil

icon Re: Pomoc oko get i set metoda27.10.2008. u 10:47 - pre 188 meseci
X Files ti je dobro napisao gde je greska (;)
Ovako treba da ti izgleda semafor.hpp da bi kompajlovao bez greske (Code::Blocks & MinGW)
Code:

#ifndef SEMAFOR_HPP_INCLUDED
#define SEMAFOR_HPP_INCLUDED

enum States
{
    sOFF, sON, sOUT, sBLINK
}; //<- Ovde je dodato ;

enum Colors
{
    cNONE, cRED, cYELLOWRED, cGREEN, cYELLOW, cBLINK
}; //<- Ovde je dodato ;

class Semafor
{
private:
    States state;
    Colors color;
public:
    Semafor();
    //void setState( States )
    States getState() const;
    //void setColor( Colors )
    Colors getColor() const;

    bool turnOn();
    bool turnOff();
    bool outOfOrder();
    bool repair();
    bool turnBlink();
    bool changeColor();
}; //<- Ovde je vec bilo ;

#endif // SEMAFOR_HPP_INCLUDED


[Ovu poruku je menjao Eurora3D Team dana 27.10.2008. u 14:50 GMT+1]
 
Odgovor na temu

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.zrlocal.net.



+5 Profil

icon Re: Pomoc oko get i set metoda30.10.2008. u 17:43 - pre 188 meseci
Izvinjavam se sto kasnim sa odgovorom, bio sam na faxu

Tako je, trebalo je posle enum ;
Sad mi je mnogo jasnije. Pozdrav!
Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pomoc oko get i set metoda30.10.2008. u 18:10 - pre 188 meseci
Tačka-zarez nakon zatvorene blok zagrade se tipično uključuje tamo gde sintaksa omogućava 'još nešto' iza zagrade, a čini izraz (class, struct, enum, ...).
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Pomoc oko get i set metoda

[ Pregleda: 4131 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.