Pereiti prie turinio

Rekomenduojami pranešimai

jei objetas turi kažkokius vidinius laukus, tada būtų kažkas tokio:

KazkoksTipas knyga = new KazkoksTipas(); //knyga savyje saugo autoriaus vardą,
                                        //leidybos metus, puslapių skaičių ir dar bala žino ką.
knyga.autorius == "sergejus"; //dėl kabučių reikėtų pasitikslint
knyga.metai == kazkoksIntKintamasis;

kintamasis knyga gali būti ir struct tipo, esmė lieka ta pati

paėmimas vyksta atvirkščiai. Gali susikurti metodus, kad paimti kažkokias reikšmes. Jei patikslintum, ko tau būtent reikia, būtų paprasčiau

Redagavo masius
Nuoroda į pranešimą
Dalintis kituose puslapiuose

jei objetas turi kažkokius vidinius laukus, tada būtų kažkas tokio:

KazkoksTipas knyga = new KazkoksTipas(); //knyga savyje saugo autoriaus vardą,
                                        //leidybos metus, puslapių skaičių ir dar bala žino ką.
knyga.autorius == "sergejus"; //dėl kabučių reikėtų pasitikslint
knyga.metai == kazkoksIntKintamasis;

kintamasis knyga gali būti ir struct tipo, esmė lieka ta pati

paėmimas vyksta atvirkščiai. Gali susikurti metodus, kad paimti kažkokias reikšmes. Jei patikslintum, ko tau būtent reikia, būtų paprasčiau

Nežinau kokia čia kalba parašei, bet dviguba lygybė taikoma tik sąlygos sakiniuose, o ne priskyrimui. Kabutės dedamos, jei tai string tipo kintamasis, jei char viengubos kabutės.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

jei objetas turi kažkokius vidinius laukus, tada būtų kažkas tokio:

KazkoksTipas knyga = new KazkoksTipas(); //knyga savyje saugo autoriaus vardą,
                                        //leidybos metus, puslapių skaičių ir dar bala žino ką.
knyga.autorius == "sergejus"; //dėl kabučių reikėtų pasitikslint
knyga.metai == kazkoksIntKintamasis;

kintamasis knyga gali būti ir struct tipo, esmė lieka ta pati

paėmimas vyksta atvirkščiai. Gali susikurti metodus, kad paimti kažkokias reikšmes. Jei patikslintum, ko tau būtent reikia, būtų paprasčiau

 

 

http://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29

 

 

Autoriui: naują pavadinimą? Gali nebent susikurti kažkokio tipo kintamąjį ir jam priskirti kintamojo objekto memberio reikšmę. Arba pakoreguoti tą objekto memberio reikšmę.

Maždaug:

// Turi klasę:
class someClass
{
public:
 someClass() { } // constructorius
 int getIntMember() const // Su šituo pasiimsi memberio reikšmę
 {
    return intMember;
 }
 void setIntMember(const int n) // Su šituo priskirsi reikšmę
 {
    intMember = n;
 }
private:
 int intMember;
}

 

Žinoma, klasės deklaracijos ir realizacijos maišyti nereikėtų, bet čia šitą parašiau tik iliustracijai - real-world'e tai turėtų būti dviejuose failuose: someClass.h (deklaracija) ir someClass.c (realizacija).

Nuoroda į pranešimą
Dalintis kituose puslapiuose

http://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29

 

 

Autoriui: naują pavadinimą? Gali nebent susikurti kažkokio tipo kintamąjį ir jam priskirti kintamojo objekto memberio reikšmę. Arba pakoreguoti tą objekto memberio reikšmę.

Maždaug:

// Turi klasę:
class someClass
{
public:
 someClass() { } // constructorius
 int getIntMember() const // Su šituo pasiimsi memberio reikšmę
 {
    return intMember;
 }
 void setIntMember(const int n) // Su šituo priskirsi reikšmę
 {
    intMember = n;
 }
private:
 int intMember;
}

 

Žinoma, klasės deklaracijos ir realizacijos maišyti nereikėtų, bet čia šitą parašiau tik iliustracijai - real-world'e tai turėtų būti dviejuose failuose: someClass.h (deklaracija) ir someClass.c (realizacija).

 

Nežinau aš c++ ypatumų, bet ar neturi ji Properčių? Nes tai ką parašei, su set, get, tai vienas propertis būtų c# kalboje :)

 

public int Number
{
  get {return m_number;}
  set {m_number = value;}
}

------------------------------------
int numeris = SomeClass.Number;
------------------------------------
SoumeClass.Number = numeris;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O as asmeniskai iki siol nesuprantu properciu prasmes. Vienintelis dalykas ka jos duoda, tai bendra varda reiksmes nuskaitymui ir nustatymui, ir kad ju naudojimas vizualiai atrodo lyg eilinio data member'io. Funkcionaliai properciai visiskai nesiskiria nuo getXXX/setXXX pirmtako...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O as asmeniskai iki siol nesuprantu properciu prasmes. Vienintelis dalykas ka jos duoda, tai bendra varda reiksmes nuskaitymui ir nustatymui, ir kad ju naudojimas vizualiai atrodo lyg eilinio data member'io. Funkcionaliai properciai visiskai nesiskiria nuo getXXX/setXXX pirmtako...

 

Funkcionalumas tai tas pats, bet patogumas tikrai žymiai didesnis. Ypač operuojant objektais, kurie turi ref į kitus objektus gilyn.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

obj.Item.Human.Child.Names.Add("Petras");

 

List<string> names = obj.Item.Child.Names;

 

Kaip šias dvi eilutes užrašytum be properčių pagalbos? :)

 

obj.getItem().getHuman().getChild().getNames().Add("Petras");

 

antra eilute analogiskai. Ir tai galima vadinti ZYMIAI ..?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

obj.getItem().getHuman().getChild().getNames().Add("Petras");

 

antra eilute analogiskai. Ir tai galima vadinti ZYMIAI ..?

Aš tai apskritai niekad nesupratau getterių/setterių, bjauriai atrodantis ir, mano akimis, nereikalingas daiktas. Suprantu, jei jie turi dar kažką įdomesnio daryti, neskaitant tos reikšmės pakeitimo/atidavimo, bet kitu atveju? Nematau p#stis su setX, getX kiekvienam kintamajam...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

obj.getItem().getHuman().getChild().getNames().Add("Petras");

 

antra eilute analogiskai. Ir tai galima vadinti ZYMIAI ..?

 

Hm, galbūt kiek kitaip įsivaizdavau tavo naudojimą. Tada skirtumo beveik ir nėra. Properčius naudojant, turi privačius kintamuosius ir tik properčio pagalba gali padaryti jį prieinamą. Tavo atveju, turbūt jie turi būti jau public? Dar properčio pagalba gali pasakyti, kad tik set arba tik get tam tikram objektui. Ir tada bus galimybė tik nuskaityti, bet nusetinti neturėsi galimybės ir atviškčiai. Nežinau, kaip tavo atveju tai būtų galima daryt. Jei lygiai tokį pat funkcionalumą galima išlaužt, tada ok. Buvau neteisius :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Hm, galbūt kiek kitaip įsivaizdavau tavo naudojimą. Tada skirtumo beveik ir nėra. Properčius naudojant, turi privačius kintamuosius ir tik properčio pagalba gali padaryti jį prieinamą. Tavo atveju, turbūt jie turi būti jau public? Dar properčio pagalba gali pasakyti, kad tik set arba tik get tam tikram objektui. Ir tada bus galimybė tik nuskaityti, bet nusetinti neturėsi galimybės ir atviškčiai. Nežinau, kaip tavo atveju tai būtų galima daryt. Jei lygiai tokį pat funkcionalumą galima išlaužt, tada ok. Buvau neteisius :)

 

Tai su metodais lygiai tas pats kaip ir su properciais. T.y. data memberis yra private, o getXXX/setXXX yra public. Jei nori neleist nustatyt reiksmes, tai setXXX neaprasai, arba padarai private. Tas pats su getXXX jeigu to reikia.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai su metodais lygiai tas pats kaip ir su properciais. T.y. data memberis yra private, o getXXX/setXXX yra public. Jei nori neleist nustatyt reiksmes, tai setXXX neaprasai, arba padarai private. Tas pats su getXXX jeigu to reikia.

 

Tada pilnai sutinku, kad tai yra tas pats. Tiesiog kaip kam patogiau :) C# kodavimo standartas: naudojami properčiai :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...