Nie za bardzo wiem jak dostosować swój kod patrząc na stronie który przysłałeś. Jeszcze mam błędny. Już nic tu nie wymyśle bez podpowiedzi.
Proszę podpowiedz co mam źle.
public Osoba(int numerEwidencyjny, string nazwisko, string imie, Adres adres)
{
this.numerEwidencyjny = numerEwidencyjny;
this.nazwisko = nazwisko;
this.imie = imie;
this(adres)
}
public Osoba(int numerEwidencyjny, string imie, Adres adres, int numerDomu) :
this(numerEwidencyjny, "Kowalski", imie, "02-222", "Warszawa", "Aleje Jerozolimskie", numerDomu, 0)
this.adres = Adres;
{ }
Nie mam pojęcia co robię źle. Podpowiedz proszę co jest źle , czego brakuje.
kowgli
(kowgli)
15 Listopad 2021 12:31
#24
public Osoba(int numerEwidencyjny, string imie, int numerDomu) :
this(numerEwidencyjny, „Kowalski”, imie, new Address („02-222”, „Warszawa”, „Aleje Jerozolimskie”, numerDomu, 0)) { }
https://dotnetfiddle.net/Widget/XpVgG7
The wszystko „ZwrocXYZ” są niepotrzebne.
Jeśli chcesz mieć pole które możesz ustawiać jedynie wewnątrz klasy, ale chcesz aby było dostępne z zewnątrz, to utwórz „property” { get; private set; }
https://dotnetfiddle.net/Widget/Q6xNnO
Wielkie dzięki nawet nie wiedziałam że można tak zrobić.
Mam problem z połączeniem wiedzy teoretycznej z praktyczną. Nie wiem jak sobie z tym poradzić.
No faktycznie chyba muszę już odpocząć bo umysł mi nie pracuje.
kowgli
(kowgli)
15 Listopad 2021 12:45
#26
Ciężko inaczej. Nie miałaś konstruktora, który przyjmowałby podawane przez ciebie parametry. Skoro „chciał” Adres to musisz tam przekazać coś co jest Adresem.
Fizyda
(Fizyda)
15 Listopad 2021 12:50
#27
Dobrze byłoby jakbyś podała też w jakim języku piszesz - ja zgadywałem, że Java dlatego pisałem o złej składni co było błędną podpowiedzią.
Jak napisałam na początku I postu nie mogę stosować get i set i nie mogę usunąć żadnych nazw (powinnam napisać nie mogę usunąć kodu i wymienić). Też nie mogę usunąć Zwróć… bo to ma zostać w kodzie.Tak zażyczył sobie wykładowca.
1 polubienie
O przepraszam faktycznie C#
kowgli
(kowgli)
15 Listopad 2021 12:53
#30
„using” i „static void Main(s tring[] args)” w Javie?
Nie to C# klasa Program nie wolno mi zmieniać.
Do tego zadania wykładowca dał kod, który trzeba przerobić tak aby spełniał wymagania zadania
Klasa Osoba
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace KadryStart
{
class Osoba
{
private string nazwisko;
private string imie;
private int numerEwidencyjny;
private string miejscowosc;
private string kod;
private string nazwaUlicy;
private int numerDomu;
private int numerMieszkania;
public Osoba(int numerEwidencyjny, string imie, string nazwisko, int numerDomu, int numerMieszkania,
string nazwaUlicy, string kod, string miejscowosc)
{
this.numerEwidencyjny = numerEwidencyjny;
this.imie = imie;
this.nazwisko = nazwisko;
this.miejscowosc = miejscowosc;
this.kod = kod;
this.nazwaUlicy = nazwaUlicy;
this.numerDomu = numerDomu;
this.numerMieszkania = numerMieszkania;
}
public Osoba(int numerEwidencyjny, string imie, int numerDomu) :
this(numerEwidencyjny, imie, "Kowalski", numerDomu, 0, "Aleje Jerozolimskie", "02-
222", "Warszawa") { }
public Osoba(ref Osoba osoba)
{
numerEwidencyjny = osoba.numerEwidencyjny; imie = osoba.imie; nazwisko
= osoba.nazwisko; miejscowosc = osoba.miejscowosc;
kod = osoba.kod; nazwaUlicy = osoba.nazwaUlicy; numerDomu =
osoba.numerDomu; numerMieszkania = osoba.numerMieszkania;
}
public string ZwrocInformacjeOsobowe()
{
return string.Format("\n Pan(i) {0} {1} o numerze ewidencyjnym: {2} zamieszkały(a): {3} {4} {5}",
imie, nazwisko, numerEwidencyjny, ZwrocMiejscowosc(),
ZwrocKod(), ZwrocNazweUlicy() + " " + ZwrocNumerDomu() + " m" + ZwrocNumerMieszkania());
}
public string ZwrocMiejscowosc() { return miejscowosc; }
public string ZwrocNazweUlicy() { return nazwaUlicy; }
public string ZwrocKod() { return kod; }
public int ZwrocNumerDomu() { return numerDomu; }
public int ZwrocNumerMieszkania() { return numerMieszkania;
}
public void ZmienDaneOsobowe()
{
Console.Write("Podaj imię: "); imie = Console.ReadLine();
Console.Write("Podaj nazwisko: "); nazwisko = Console.ReadLine();
do
{
Console.Write("Podaj numer ewidencyjny: ");
}
while (!int.TryParse(Console.ReadLine(), out numerEwidencyjny));
}
public void ZmienAdres()
{
Console.Write("Podaj nazwę miejscowści: "); miejscowosc =
Console.ReadLine();
Console.Write("Podaj nazwę ulicy "); nazwaUlicy = Console.ReadLine();
Console.Write("Podaj kod: "); kod = Console.ReadLine();
do
{
Console.Write("Podaj numer domu: ");
}
while (!int.TryParse(Console.ReadLine(), out numerDomu));
Console.Write("Czy jest numer mieszkania <t/n>: ");
char c = Console.ReadKey().KeyChar;
if (c == 't')
{
Console.WriteLine();
do
{
Console.Write("Podaj numer meszkania: ");
}
while (!int.TryParse(Console.ReadLine(), out numerMieszkania));
}
else
{
numerMieszkania = 0;
}
}
public Osoba Klonuj()
{
return (Osoba)this.MemberwiseClone();
}
}
}
Klasa Program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kadry
{
public class Program
{
static void Main(string[] args)
{
Osoba os1 = new Osoba(5, "Ola", 43);
Console.WriteLine(" Oryginał {0}", os1.ZwrocInformacjeOsobowe());
Console.WriteLine("\n***Zmieniamy klon:***\n");
Osoba klon1 = os1.Klonuj();
Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());
klon1.ZmienDaneOsobowe();
klon1.ZmienAdres();
Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());
Osoba os3 = new Osoba(ref os1);
Console.WriteLine(" Oryginał {0}", os3.ZwrocInformacjeOsobowe());
Console.WriteLine("\n***Zmieniamy klon:***\n");
Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());
klon1.ZmienDaneOsobowe();
klon1.ZmienAdres();
Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());
Console.ReadKey();
}
}
}
Fizyda
(Fizyda)
15 Listopad 2021 13:11
#34
Jave ostatni raz widziałem na studiach i nawet nie zerknąłem we fragmenty kodu które nie były istotne. Podstawowy błąd atrybucji, miałem Jave na studiach, uczą jej na wielu uczelniach, nie wpadłem na pomysł, że to może być C# . Dopiero po Twoim poście uświadomiłem sobie, że przecież mi kompletnie nie leżała składnia wywoływania konstruktora na liście inicjalizacyjnej czego nie ma w Javie. A cały czas się głowiłem skąd pomysł na taki sytanx .
Tego nie można usunąć można tylko zmienić tak żeby działało:
dluga.marta:
public string ZwrocMiejscowosc() { return miejscowosc; }
public string ZwrocNazweUlicy() { return nazwaUlicy; }
public string ZwrocKod() { return kod; }
public int ZwrocNumerDomu() { return numerDomu; }
public int ZwrocNumerMieszkania() { return numerMieszkania;
}
public void ZmienDaneOsobowe()
{
Console.Write("Podaj imię: "); imie = Console.ReadLine();
Console.Write("Podaj nazwisko: "); nazwisko = Console.ReadLine();
do
{
Console.Write("Podaj numer ewidencyjny: ");
}
while (!int.TryParse(Console.ReadLine(), out numerEwidencyjny));
}
public void ZmienAdres()
{
Console.Write("Podaj nazwę miejscowści: "); miejscowosc =
Console.ReadLine();
Console.Write("Podaj nazwę ulicy "); nazwaUlicy = Console.ReadLine();
Console.Write("Podaj kod: "); kod = Console.ReadLine();
do
{
Console.Write("Podaj numer domu: ");
}
while (!int.TryParse(Console.ReadLine(), out numerDomu));
Console.Write("Czy jest numer mieszkania <t/n>: ");
char c = Console.ReadKey().KeyChar;
if (c == 't')
{
Console.WriteLine();
do
{
Console.Write("Podaj numer meszkania: ");
}
while (!int.TryParse(Console.ReadLine(), out numerMieszkania));
}
else
{
numerMieszkania = 0;
}
}
public Osoba Klonuj()
{
return (Osoba)this.MemberwiseClone();
}
aesereht
(aesereht)
15 Listopad 2021 13:41
#37
Czyli udało się już znaleźć problem czy nie?
Przy okazji skoro ładujesz bibliotekę
using System;
to wszystko pod spodem nie jest przypadkiem zbędne, bo już się w niej zawiera?
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
Fizyda
(Fizyda)
15 Listopad 2021 13:55
#38
Usingi z tego co rozumiem są napisane przez wykładowcę i nie można tego ruszać. Ma nie do końca działający program i ma go uzupełnić. W sumie chodzi o dopisanie konstruktora bez parametru adres.
Niestety nadal wywala błąd przy kompilowaniu. Nie podoba się mu return adres.kod;
Jak to poprawić żeby działało?
public string ZwrocKod()
{
return adres.kod;
}
public string ZwrocMiejscowosc()
{
return adres.miejscowosc;
}
public string ZwrocNazweUlicy()
{
return adres.nazwaUlicy;
}
public int ZwrocNumerDomu()
{
return adres.numerDomu;
}
public int ZwrocNumerMieszkania()
{
return adres.numerMieszkania;
}
public string ZwrocInformacjeOsobowe()
{
return string.Format("\n Pan(i) {0} {1} o numerze ewidencyjnym: {2} zamieszkały(a): {3} {4} {5}",
nazwisko, imie, numerEwidencyjny, ZwrocKod(), ZwrocMiejscowosc(),
ZwrocNazweUlicy() + " " + ZwrocNumerDomu() + " m" + ZwrocNumerMieszkania());
}
Visual Studio takie usingi daje.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
aesereht
(aesereht)
15 Listopad 2021 14:17
#41
Ok puściłem ten twój kod i nie widzę problemów?
https://dotnetfiddle.net/OvEMEh
Tylko zmieniłem miejsca gdzie oczekujesz wartości, bo nie da się ich wprowadzać w tym kompilatorze, więc zmieniłem na jakieś stałe.
+ ze zmienionym tym fragmentem co napisał @kowgli