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

Pravljenje klase sa ICloneable i IComparable

[es] :: .NET :: Pravljenje klase sa ICloneable i IComparable

[ Pregleda: 1637 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MarkoGagi
Student
Beograd

Član broj: 262871
Poruke: 26
82.117.202.*



Profil

icon Pravljenje klase sa ICloneable i IComparable23.06.2010. u 18:08 - pre 168 meseci
Pozdrav drugari,
potrebna mi je pomoc oko pravljenja klase.
Treba da napravim klasu kojoj bi se u konstruktoru prosleđivali podaci o korisniku(id, ime, prezime, mesto). Za svaku od tih vrednosti treba read only property .
Mora se implementirati interface ICloneable i IComparable i napraviti override metode ToString tako da vraća podatke korisnika razdvojene međusobno sekvencom ’ – ’

Pa mi to ne ide, ako moze neka pomoc bio bih vam zahvalan.
 
Odgovor na temu

Radovan__III
Radovan__III
Beograd

Član broj: 15669
Poruke: 1245
*.dynamic.isp.telekom.rs.



+26 Profil

icon Re: Pravljenje klase sa ICloneable i IComparable23.06.2010. u 18:46 - pre 168 meseci
pokazi nam dokle si dosao pa da vidimo gde je zapelo
Aj sad svi u biblioteku da nesto pojedemo i popijemo ...
--------------------------------
Knjigovodstvo

 
Odgovor na temu

MarkoGagi
Student
Beograd

Član broj: 262871
Poruke: 26
82.117.202.*



Profil

icon Re: Pravljenje klase sa ICloneable i IComparable23.06.2010. u 18:57 - pre 168 meseci
Evo koda, pa mnogo ne razumem cemu ovaj Icomparable i iClonable, ne znam jel treba tu nesto jos ili je to to... i kako se pravi read only property.
Code:

using System;
namespace Projekat
{
    public class Korisnik:ICloneable,IComparable
    {
        public Korisnik(int id, string ime, string prezime, string mesto)
        {

        }
        public int Id
        {
            get
            {
                return Id;
            }
        }
        public string Ime
        {
            get
            {
                return Ime;
            }
        }
        public string Prezime
        {
            get
            {
                return Prezime;
            }
        }
        public string Mesto
        {
            get
            {
                return Mesto;
            }
        }
        public object Clone()
        {
            throw new NotImplementedException();
        }
        public int CompareTo(object obj)
        {
            throw new NotImplementedException();
        }
        public override string ToString()
        {
            return Id + "-" + Ime + "-" + Prezime + "-" + Mesto;
        }
    }
}
 
Odgovor na temu

Radovan__III
Radovan__III
Beograd

Član broj: 15669
Poruke: 1245
*.dynamic.isp.telekom.rs.



+26 Profil

icon Re: Pravljenje klase sa ICloneable i IComparable23.06.2010. u 20:25 - pre 168 meseci
Dobro je samo sto jos trebas da definises property ( promenjive ) . Postavi ih na private i samim tim sto postoji samo get oni su onda read only jer se moze podatak samo citati a ne i setovati .
Po meni trebalo bi i da unutar konstruktora postavis kod koji ce dodeliti pocetne vrednosti promenjivima ( to nije definisano u zadatku ali je ocigledno da treba )
Aj sad svi u biblioteku da nesto pojedemo i popijemo ...
--------------------------------
Knjigovodstvo

 
Odgovor na temu

MarkoGagi
Student
Beograd

Član broj: 262871
Poruke: 26
82.117.202.*



Profil

icon Re: Pravljenje klase sa ICloneable i IComparable23.06.2010. u 20:46 - pre 168 meseci
Postavljeni su na private.
Code:

public Korisnik(int id, string ime, string prezime, string mesto)
        {
            id = this.Id;
            ime= this.Ime;
            prezime = this.:Prezime;
            mesto = this.Mesto;
        }

Da li ovako mislis?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Pravljenje klase sa ICloneable i IComparable23.06.2010. u 20:55 - pre 168 meseci
Za IComparable mozes da iskoristis porednje ToString() vrednosti (posto vec sadrze sva polja), mozes i da uporedis sva polja ali ti je poredjenje ToString() krace u sorsu.
Za ICloneable mozes da iskoristis this.MemberwiseClone() metod jer su ti sva polja stringovi ili value-tipovi pa je shallow-copy dovoljan za kloniranje.

Takodje, u C#3 ne moras da imas skrivena polja da cuvaju vrednosti propertija, postoji mehanizam da se polje implicitno kreira, samo napravis da je get public a set private (tj da samo unutar klase mozes da ih postavis)

Code (csharp):

public int Id { get; private set; }
public string Ime { get; private set; }
public string Prezime { get; private set; }
...
 


Sto se tice konstruktora, obrnuto ide dodela, tj this.id = id; ...
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

MarkoGagi
Student
Beograd

Član broj: 262871
Poruke: 26
82.117.202.*



Profil

icon Re: Pravljenje klase sa ICloneable i IComparable23.06.2010. u 21:18 - pre 168 meseci
Ok propertiji su reseni.
Ali mi nije jasno ovo oko IComparable i IClonable... nisam ih nikad koristio.

Da li mozda ovako:
Code:

  public object Clone()
        {
            this.MemberwiseClone();
            throw new NotImplementedException();
        }

        public int CompareTo(object obj)
        {
            CompareTo(ToString());
            throw new NotImplementedException();
        }
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Pravljenje klase sa ICloneable i IComparable23.06.2010. u 21:31 - pre 168 meseci
Clone mora da ti vrati objekat tog tipa, znaci samo return this.MemberwiseClone();
izbaci te throw NotImplemented linije, sad si ih implementirao, neces bacati te exceptione iz njih.

Za CompareTo je situacija malo drugacija, moras prvo da proveris da li je objekat ispravnog tipa, pa ako jeste iskoristis comapreTo od stringa

Code (csharp):

public object Clone()
{
    return this.MemberwiseClone();
}

public int CompareTo(object obj)
{
    Korisnik k = obj as Korisnik;
    if (k != null)
        return ToString().CompareTo(k.ToString());
    else
        throw new ArgumentException("Prosledjeni objekat nije instanca klase Korisnik");
}


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: Pravljenje klase sa ICloneable i IComparable

[ Pregleda: 1637 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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