// tipski sigurna (type-safe) implementacija public bool Equals(Osoba obj) { // Implementirati tipski sigurnu usporedbu tako da metoda Main prođe bez problema if(string.Format("'{0}, {1}'", m_ime, m_matičniBroj) == obj.ToString() ) return true; return false; }
static void Main(string[] args) { // dvije osobe s različitim imenima i MB Osoba osobaA = new Osoba("Janko", 1); Osoba osobaB = new Osoba("Darko", 2); Debug.Assert((osobaA == osobaB) == false); Debug.Assert(osobaA != osobaB); // novi "Janko" s drugim matičnim brojem osobaB = new Osoba("Janko", 2); Debug.Assert((osobaA == osobaB) == false); Debug.Assert(osobaA != osobaB); // novi "Janko" s istim matičnim brojem osobaB = new Osoba("Janko", 1); Debug.Assert(osobaA == osobaB); Debug.Assert((osobaA != osobaB) == false); osobaB = osobaA; Debug.Assert(osobaA == osobaB); Debug.Assert((osobaA != osobaB) == false); osobaB = null; Debug.Assert((osobaA == osobaB) == false); Debug.Assert(osobaA != osobaB); osobaA = null; Debug.Assert(osobaA == osobaB); Debug.Assert((osobaA != osobaB) == false); Console.ReadLine(); }
static void Main(string[] args) { Console.WriteLine("Usporedba referenci na isti objekt:"); Osoba osobaA = new Osoba("Janko", 1); Osoba osobaB = osobaA; UsporedbaOsoba(osobaA, osobaB); Console.WriteLine(); Console.WriteLine("Usporedba s null referencom na objekt istog tipa:"); UsporedbaOsoba(osobaA, null); Console.WriteLine(); Console.WriteLine("Usporedba dviju osoba s različitim imenima i matičnim brojevima:"); osobaB = new Osoba("Marko", 2); UsporedbaOsoba(osobaA, osobaB); Console.WriteLine(); Console.WriteLine("Usporedba dviju osoba s isitim imenima i različitim matičnim brojevima:"); osobaB = new Osoba("Janko", 5); UsporedbaOsoba(osobaA, osobaB); Console.WriteLine(); Console.WriteLine("Usporedba dviju osoba s isitim imenima i istim matičnim brojevima:"); osobaB = new Osoba("Janko", 1); UsporedbaOsoba(osobaA, osobaB); Console.WriteLine(); Console.WriteLine("Usporedba bezimene osobe s osobom koja ima ime:"); osobaB = new Osoba(null, 2); UsporedbaOsoba(osobaA, osobaB); Console.WriteLine(); Console.WriteLine("GOTOVO!!!"); Console.ReadKey(); }
public static Osoba PozivMetodePromijeniOsobu(Osoba osoba, string novoIme, int noviMatičniBroj) { Console.WriteLine(string.Format("Prije metode PromijeniOsobu: {0}", osoba)); PromijeniOsobu(osoba, novoIme, noviMatičniBroj); Console.WriteLine(string.Format("Nakon metode PromijeniOsobu: {0}", osoba)); return osoba; }
public static void UsporedbaOsoba(Osoba osobaA, Osoba osobaB) { Console.WriteLine(osobaA); Console.WriteLine(osobaB); try { Console.WriteLine(osobaA.Equals(osobaB)); } catch (NullReferenceException) { Console.WriteLine("POGREŠKA: osobaA je null referenca pa nema metodu Equals!"); } try { Console.WriteLine(osobaB.Equals(osobaA)); } catch (NullReferenceException) { Console.WriteLine("POGREŠKA: osobaB je null referenca pa nema metodu Equals!"); } // poziv statičke metode Console.WriteLine(Osoba.Equals(osobaA, osobaB)); Console.WriteLine(Osoba.ReferenceEquals(osobaA, osobaB)); }
public bool Equals(Osoba obj) { // Preslikati implementaciju metode Equals iz EqualsRefTip if (string.Format("'{0}, {1}'", m_ime, m_matičniBroj) == obj.ToString()) return true; return false; }
static void Main(string[] args) { Osoba osobaA = new Osoba("Janko", 1); Osoba osobaB = osobaA; Jednakost(osobaA, osobaB); // novi "Janko" s istim matičnim brojem osobaB = new Osoba("Janko", 1); Jednakost(osobaA, osobaB); // novi "Janko" s drugim matičnim brojem osobaB = new Osoba("Janko", 2); Jednakost(osobaA, osobaB); // dvije osobe s različitim imenima i MB osobaB = new Osoba("Darko", 2); Jednakost(osobaA, osobaB); osobaB = null; Jednakost(osobaA, osobaB); osobaA = null; Jednakost(osobaA, osobaB); Console.WriteLine("GOTOVO!!!"); Console.ReadKey(); }
public static void UsporedbaOsoba(Osoba osobaA, Osoba osobaB) { Console.WriteLine(osobaA); Console.WriteLine(osobaB); Console.WriteLine(osobaA.Equals(osobaB)); Console.WriteLine(osobaB.Equals(osobaA)); }
public void EqualsZaReferentniTip_UsporedbaSNullReferencomVraćaFalse() { Osoba o1 = new Osoba("Janko", 1); Osoba o2 = null; Assert.IsFalse(o1.Equals(o2)); Assert.IsFalse(Osoba.Equals(o1, o2)); Assert.IsFalse(Osoba.ReferenceEquals(o1, o2)); }
public bool Equals(Osoba obj) { // Preslikati implementaciju metode Equals iz EqualsRefTip if (this.GetType() != obj.GetType()) return false; Osoba a = (Osoba)obj; if ((Osoba.Equals(this.m_ime, a.m_ime)) == false) return false; return m_matičniBroj.Equals(a.m_matičniBroj); }
// tipski sigurna (type-safe) implementacija public bool Equals(Osoba obj) { // Implementirati tipski sigurnu usporedbu tako da metoda Main prođe bez problema if (this.GetType() != obj.GetType()) return false; Osoba a = (Osoba)obj; if ((Osoba.Equals(this.m_ime, a.m_ime)) == false) return false; return m_matičniBroj.Equals(a.m_matičniBroj); }
public void EqualsZaReferentniTip_UsporedbaDvijuOsobaSRazličitimImenimaRazličitimMatičnimBrojemVraćaFalse() { Osoba o1 = new Osoba("Janko", 1); Osoba o2 = new Osoba("Marko", 2); Assert.IsFalse(o1.Equals(o2)); Assert.IsFalse(o2.Equals(o1)); Assert.IsFalse(Osoba.Equals(o1, o2)); Assert.IsFalse(Osoba.ReferenceEquals(o1, o2)); }
public void EqualsZaReferentniTip_UsporedbaReferenciNaIstiObjektUvijekVraćaTrue() { Osoba o1 = new Osoba("Janko", 1); Osoba o2 = o1; Assert.IsTrue(o1.Equals(o2)); Assert.IsTrue(o2.Equals(o1)); Assert.IsTrue(Osoba.Equals(o1, o2)); Assert.IsTrue(Osoba.ReferenceEquals(o1, o2)); }
public static void Jednakost() { Osoba osobaA = new Osoba("Janko", 1); Osoba osobaB = osobaA; // TODO: Otkomentirati donju naredbu i provjeriti ispravnost implementacije metode Clone donjim programom //osobaB = osobaA.Clone(); Console.WriteLine(string.Format("{0} ReferenceEquals( {1} ): {2}", osobaA, osobaB, Osoba.ReferenceEquals(osobaA, osobaB))); Console.WriteLine(string.Format("{0} == {1}: {2}", osobaA, osobaB, osobaA == osobaB)); Console.WriteLine(string.Format("{0} != {1}: {2}", osobaA, osobaB, osobaA != osobaB)); }
public bool Equals(Osoba obj) { // Preslikati implementaciju metode Equals iz EqualsRefTip Osoba drugi = (Osoba)obj; if (Osoba.Equals(this.m_ime, drugi.m_ime) == false) return false; return m_matičniBroj.Equals(drugi.m_matičniBroj); if (obj == null) return false; if (this.GetType() != obj.GetType()) return false; return true; }
static void Main(string[] args) { // dvije osobe Osoba osobaA = new Osoba("Janko", 1); Osoba osobaB = osobaA; Debug.Assert(osobaA.Equals(osobaB)); osobaB.m_ime = "Marko"; Debug.Assert(osobaA.Equals(osobaB) == false); // kloniramo osobaB = osobaA.Clone(); Debug.Assert(osobaA.Equals(osobaB)); osobaB.m_ime = "Pero"; Debug.Assert(osobaA.Equals(osobaB) == false); Console.ReadLine(); }
static void Main(string[] args) { // dvije osobe s različitim imenima i MB Osoba osobaA = new Osoba("Janko", 1); Osoba osobaB = new Osoba("Darko", 2); Debug.Assert(osobaA.Equals(osobaB) == false); // preslika osobe A osobaB = osobaA; Debug.Assert(osobaA.Equals(osobaB) == true); // novi "Janko" s istim matičnim brojem osobaB = new Osoba("Janko", 1); Debug.Assert(osobaA.Equals(osobaB) == true); // "Janko", ali s drugim matičnim brojem osobaB = new Osoba("Janko", 2); Debug.Assert(osobaA.Equals(osobaB) == false); Console.ReadLine(); }
static void Main(string[] args) { // dvije osobe s različitim imenima i MB Osoba osobaA = new Osoba("Janko", 1); Osoba osobaB = new Osoba("Darko", 2); UsporedbaOsoba(osobaA, osobaB); // preslika osobe A osobaB = osobaA; UsporedbaOsoba(osobaA, osobaB); // novi "Janko" s istim matičnim brojem osobaB = new Osoba("Janko", 1); UsporedbaOsoba(osobaA, osobaB); // "Janko", ali s drugim matičnim brojem osobaB = new Osoba("Janko", 2); UsporedbaOsoba(osobaA, osobaB); Console.WriteLine("GOTOVO!!!"); Console.ReadKey(); }
public bool Equals(Osoba obj) { // TODO: Preslikati implementaciju metode Equals iz EqualsRefTip return true; }
// tipski sigurna (type-safe) implementacija public bool Equals(Osoba obj) { // TODO: Implementirati tipski sigurnu usporedbu tako da metoda Main prođe bez problema return true; }
static void Jednakost(Osoba osobaA, Osoba osobaB) { Console.WriteLine(string.Format("{0} == {1}: {2}", osobaA, osobaB, osobaA == osobaB)); Console.WriteLine(string.Format("{0} != {1}: {2}", osobaA, osobaB, osobaA != osobaB)); }
// TODO: Dodati prvom parametru metode modifikator ref tako da se prvi argument osoba metodi prenosi po referenci te promijeniti poziv metode. Pokrenuti program i provjeriti ispis. static void PromijeniOsobu(Osoba osoba, string novoIme, int noviMatičniBroj) { osoba = new Osoba(novoIme, noviMatičniBroj); }