Oseba
Sestavi razred Oseba, ki vsebuje podatke o osebi, in sicer:
$ime$
$priimek$
$datum rojstva$
Za predstavitev datuma uporabi razred Datum iz prejšnje naloge.
Definiraj ustrezne konstruktorje in metodo $public string ToString()$, ki predstavi osebo z nizom znakov.
Razred preizkusi tako, da narediš osebo, ki predstavlja tebe.
Razredu Oseba dodaj metodo override $public String Polno_ime()$, ki vrne polno ime osebe, se pravi ime in priimek, ločena s presledkom.
Rešitev (Java)
public class Oseba {
//ime, priimek, datum rojstva
private String ime;
private String priimek;
private Datum dat;
// konstruktorja
public Oseba() {
this.ime = "Janez";
this.priimek = "Novak";
this.nastaviDat(1, 1, 1950); // ali pa this.dat = new Datum();
}
public Oseba(String i, String p, Datum dat) {
this.ime = i;
this.priimek = p;
this.dat = dat; // tukaj res da le pokažemo na objekt tipa Datum, a ker je razred Datum2 tak, da se
// objekti ne spreminjajo, bo to čisto smiselno
}
// metoda za klic imena, priimka, datuma
public String vrniI() {
return this.ime;
}
public String vrniP() {
return this.priimek;
}
public Datum vrniDat() {
return this.dat;
}
// metoda za nastavljanje imena, priimka, datuma
public void nastaviI(String im) {
this.ime = im; // nobena kontrola ni potrebna, vsak niz je dovoljeno ime
}
public void nastaviP(String pr) {
this.priimek = pr;
}
public void nastaviDat(Datum dat) {
this.dat = dat; // glej opombo pri konstruktorju
}
public void nastaviDat(int dan, int mesec, int leto) {
// s tem bomo naredili še en objekt tipa Datum!!!
Datum novDat = new Datum(dan, mesec, leto); // kontrole smiselnosti so že v konstruktorju! - če niso OK, se ustvari
// tak datum, kot opisuje razreda Datum
this.dat = novDat;
}
// metoda za izpis podatkov
public String toString() {
return this.vrniI() + " " + this.priimek + ", " + this.dat;
// za ime smo uporabili metodo
// za priimek pa kar neposredni dostop, ki je znotraj razreda možen kljub private
// this.dat je dejansko this.dat.toSTring() - torej kličemo ustrezno metodo iz razreda Datum
}
// metoda, ki vrne ime in priimek (z vmesnim presledkom)
public String polnoIme() {
return this.ime + " " + this.priimek;
}
}
Rešitev (C#)
using System;
using System.Collections.Generic;
using System.Text;
/// <summary>
/// Metoda Oseba predstavlja moje osnovne podatke (ime, priimek, datum rojstva)
/// </summary>
public class Oseba {
/// <summary>
/// Objektne spremeljivke in spremnljivka dat tipa Datum
/// </summary>
private string ime;
private string priimek;
private Datum dat;
/// <summary>
/// osnovni konstruktor
/// </summary>
public Oseba() {
this.ime = "Jaka";
this.priimek = "Novak";
this.dat = new Datum();
}
/// <summary>
///konstruktor z danimi vrednostmi, najprej se izvede osnovni konstruktor
/// </summary>
/// <param name="im"></param>
/// <param name="priim"></param>
/// <param name="dat"></param>
public Oseba(string im, string priim, Datum dat): this() {
this.NastaviIme(im);
this.NastaviPriimek(priim);
this.dat = dat;
}
/// <summary>
///
/// </summary>
/// <returns>vrnemo ime</returns>
public string VrniIme() {
return this.ime;
}
/// <summary>
///
/// </summary>
/// <returns>vrnemo priimek</returns>
public string VrniPriimek() {
return this.priimek;
}
/// <summary>
///
/// </summary>
/// <returns>vrnemo datum</returns>
public Datum VrniDatum() {
return this.dat;
}
/// <summary>
/// če je ime null ali prazen niz se ime ne spremeni
/// </summary>
/// <param name="im"></param>
public void NastaviIme(string im) {
if (im != null && im != "") {
this.ime = im;
}
}
/// <summary>
/// če je priimek null ali prazen niz se priimek ne spremeni
/// </summary>
/// <param name="priim"></param>
public void NastaviPriimek(string priim) {
if (priim!= null && priim != "") {
this.priimek = priim;
}
}
/// <summary>
/// metoda za izpis predstavitve osebe
/// </summary>
/// <returns></returns>
public override String ToString() {
return this.VrniIme() + " " + this.VrniPriimek() + ", rojen " + this.dat + ".";
}
/// <summary>
/// metoda ki vrne polno ime osebe (ime in priimek) z ločenim presledkom
/// </summary>
/// <returns></returns>
public String PolnoIme() {
return this.VrniIme() + " " + this.VrniPriimek() + ".";
}
}
/// <summary>
/// Metoda ki predstavlja datum
/// </summary>
public class Datum {
private int dan;
private int mesec;
private int leto;
/// <summary>
/// osnovni konstruktor
/// </summary>
public Datum() {
this.dan = 15;
this.mesec = 5;
this.leto = 1980;
}
/// <summary>
/// konstruktor z danimi vrednostmi, najprej se izvede osnovni konstruktor
/// </summary>
/// <param name="d"></param>
/// <param name="m"></param>
/// <param name="l"></param>
public Datum(int d, int m, int l): this() {
this.NastaviDan(d);
this.NastaviMesec(m);
this.NastaviLeto(l);
}
/// <summary>
/// nastavimo dan med 1 in 31
/// </summary>
/// <param name="d"></param>
public void NastaviDan(int d) {
if (d >= 1 && d <= 31) {
this.dan = d;
}
}
/// <summary>
/// vrnemo dan
/// </summary>
/// <returns></returns>
public int VrniDan() {
return this.dan;
}
/// <summary>
/// vrnemo mesec
/// </summary>
/// <returns></returns>
public int VrniMesec() {
return this.mesec;
}
/// <summary>
/// vrnemo leto
/// </summary>
/// <returns></returns>
public int VrniLeto() {
return this.leto;
}
/// <summary>
/// nasatvimo mesec med 1 in 12
/// </summary>
/// <param name="m"></param>
public void NastaviMesec(int m) {
if (m >= 1 && m <= 12) {
this.mesec = m;
}
}
/// <summary>
/// nastavimo leto rojstva
/// </summary>
/// <param name="l"></param>
public void NastaviLeto(int l) {
if (l > 0 && l <= 2008) {
this.leto = l;
}
}
/// <summary>
/// metoda za izpis podatkov
/// </summary>
/// <returns></returns>
public override String ToString() {
return this.VrniDan() + "." + this.VrniMesec() + "." + this.VrniLeto();
}
}
Testni program
<csharp>using System;
using System.Collections.Generic;
using System.Text;
using MojiRazredi;
namespace OsebaTest {
class Program
{
static void Main(string[] args) {
//ustvarino objekt mojDatum
Datum mojDatum = new Datum(25,2,1962);
//ustvarimo objekt jaz
Oseba jaz = new Oseba("Jože","Bubnjar",mojDatum);
Console.WriteLine(jaz);
Console.WriteLine(jaz.PolnoIme());
Console.Write("\nZa konec pritisni katerokoli tipko...");
Console.ReadLine();
}
}