Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 2.446 pregleda

Najnovija ↓

Pravljenje klase sa ICloneable i IComparable 23.06.2010. u 19:08 · pre 199 meseci #1
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.
Re: Pravljenje klase sa ICloneable i IComparable 23.06.2010. u 19:57 · pre 199 meseci #3
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;
        }
    }
}
Re: Pravljenje klase sa ICloneable i IComparable 23.06.2010. u 21:25 · pre 199 meseci #4
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 )
Potpis
Aj sad svi u biblioteku da nesto pojedemo i popijemo ...
--------------------------------
Knjigovodstvo

Re: Pravljenje klase sa ICloneable i IComparable 23.06.2010. u 21:46 · pre 199 meseci #5
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?
Re: Pravljenje klase sa ICloneable i IComparable 23.06.2010. u 21:55 · pre 199 meseci #6
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; ...
Potpis
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ć
Re: Pravljenje klase sa ICloneable i IComparable 23.06.2010. u 22:18 · pre 199 meseci #7
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();
        }
Re: Pravljenje klase sa ICloneable i IComparable 23.06.2010. u 22:31 · pre 199 meseci #8
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");
}

Potpis
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ć
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme