Witam,
mam do zrobienia taki projekt jak w załączniku, lecz utknąłem na punkcie 13. Chodzi dokładnie o to : "Ponadto, powinna posiadać właściwość tylko do odczytu umożliwiającą odczyt adresu w formacie „pocztowym”.
Punkt 14 też jest dla mnie abstrakcją.
Prosiłbym o jakieś wskazówki.
- Tworzysz sobie klasę (np. o nazwie
Address
). Klasa to posiada poszczególne pola wymienione w zadaniu (ulica, miasto, itp.) jako zmienne instancyjne. Dodatkowo tworzysz sobie metodę wyświetlającą Twoje dane w podany sposób (w Javie zazwyczaj używa siętoString
). - W klasie
Osoba
dodajesz zmienną instancyjną w postaci obiektu klasy, którą tworzysz na potrzeby punktu 13
@Burdzi0, ale on ma tam użyć właściwości. A właściwości w C# są wbudowane w składnię języka.
public string X
{
get { return "Jakis string"; }
}
Albo korzystając z C# 6
public string X => "Jakis string";
A w 14 to nie wiem z czym problem. Właściwość robisz tak jak każdą inną, tylko jako typ dajesz klasę, którą utworzyłeś w zadaniu poprzednim.
Mam coś takiego
Główna funkcja programu:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Osoba o1 = new Osoba();
Adres a1 = new Adres();
Console.WriteLine(a1.odczyt);
o1.UstawDane(Console.ReadLine(), Console.ReadLine());
o1.PrzedstawSie();
}
}
}
oraz dwie klasy.
Pierwsza klasa Osoba :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Osoba
{
private string Imie;
private string Nazwisko;
public string imie
{
get
{
return this.Imie;
}
private set
{
Imie = value;
}
}
public string nazwisko
{
get
{
return this.Nazwisko;
}
private set
{
Nazwisko = value;
}
}
public static string adres
{
get
{
Adres a1 = new Adres();
return a1.odczyt;
}
private set
{
adres = value;
}
}
public void PrzedstawSie()
{
Console.WriteLine("Nazywam się" + this.Imie + this.Nazwisko);
}
public void UstawDane(string Imie, string Nazwisko)
{
this.imie = Imie;
this.nazwisko = Nazwisko;
}
}
}
Druga klasa Adres :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Adres
{
private string Ulica;
private string NrDom;
private string NrUlica;
private string Kod;
private string Miasto;
private string Panstwo;
private string Odczyt;
public string ulica
{
get
{
return this.Ulica;
}
private set
{
Ulica = value;
}
}
public string nrdom
{
get
{
return this.NrDom;
}
private set
{
NrDom = value;
}
}
public string nrulica
{
get
{
return this.NrUlica;
}
private set
{
NrUlica = value;
}
}
public string kod
{
get
{
return this.Kod;
}
private set
{
Kod = value;
}
}
public string miasto
{
get
{
return this.Miasto;
}
private set
{
Miasto = value;
}
}
public string panstwo
{
get
{
return this.Panstwo;
}
private set
{
Panstwo = value;
}
}
public string odczyt
{
get
{
return Ulica + NrUlica + NrDom + Kod + Miasto + Panstwo;
}
private set
{
Odczyt = value;
}
}
}
}
Nie wiem, czy robię dobrze. Utknąłem na 14/15 punkcie i zero jakiegoś pomysłu.
Zastanawiam się jak wiele samozaparcia trzeba mieć, żeby nazywać wszystko zupełnie odwrotnie niż jest w konwencjach języka. Nazwy pól piszemy małą, a nazwy właściwości wielką literą.
class Adres
{
public string Ulica { get; private set; }
public string Nrdom { get; private set; }
public string Nrulica { get; private set; }
public string Kod { get; private set; }
public string Miasto { get; private set; }
public string Panstwo { get; private set; }
public string Odczyt
{
get
{
return Ulica + Nrulica + Nrdom + Kod + Miasto + Panstwo;
}
}
}
Ok coś tam dałem rade naskrobać. Pytanie mam odnośnie ostatniego punktu jak zrobić pętle by dane się zapisywały by można potem je wyciągnąć? Wiem, że tablica, ale potrzebuje jakiegoś konkretnego rozwiązania.