[ alessandroistriano @ 30.05.2017. 12:13 ] @
imam zadatak:

Napraviti klasu User koja ima sledeća svojstva: id, first_name, last_name, age. Klasa mora posedovati:

Konstruktor klase
Metodu koja vraća ime i prezime korisnika
Metodu koja vraća boolean vrednost u skladu sa tim da li je korisnik punoletan ili nije


Nakon kreiranja klase potrebno je kreirati i objekat koji predstavlja instancu kreirane klase. Nad objektom pozvati obe metode i prikazati rezultat izvršavanja na strani.

Zadatak sam resio, ali bez konstruktora klase, metode i boolean-a.
Da li bi neko mogao da mi pomogne oko koda?
Unapred hvala, pozdrav!
[ Predrag Supurovic @ 30.05.2017. 13:22 ] @
Pa okači kod....
[ anon115774 @ 31.05.2017. 11:02 ] @
Citat:
alessandroistriano:Zadatak sam resio, ali bez konstruktora klase, metode i boolean-a.


Gde je zapelo sa konstruktorom?

Sto se tice metode za proveru godina:

Code:

public function punoletan() {
  return $this->age >= 18 ? true : false;
}

[ alessandroistriano @ 31.05.2017. 11:58 ] @
Code:
class User {     
  private $id;     
  private $first_name;     
  private $last_name;     
  private $age;     

  public function __construct($id, $first_name, $last_name, $age) {
         $this->id = $id;
         $this->first_name = $first_name;
         $this->last_name = $last_name;
         $this->age = $age;     
  }
     
  public function fullName() {
         return $this->first_name . " " . $this->last_name;     
  }     

  public function isNotMinor() {
         return $this->age > 18;     
  } 
}


hm, interpreter javlja gresku

i takodje, kako da dodam onaj deo, unesite vasum datum rodjenja, onda on odabere iz padajuceg menija, pa da se klikne na dugme i da sistem javlja, punoleti ste ili niste pounoletni?

[Ovu poruku je menjao Nemanja Avramović dana 05.06.2017. u 00:41 GMT+1]
[ anon115774 @ 31.05.2017. 12:28 ] @
Citat:
alessandroistriano: class User { private $id; private $first_name; private $last_name; private $age; public function __construct($id, $first_name, $last_name, $age) { $this->id = $id; $this->first_name = $first_name; $this->last_name = $last_name; $this->age = $age; } public function fullName() { return $this->first_name . " " . $this->last_name; } public function isNotMinor() { return $this->age > 18; } }

hm, interpreter javlja gresku


Pa i ja bih, da sam interpreter, javio gresku. Ovo uopste nije citljivo. Napisi kod kako treba pa ga okaci jer ovo ne moze da se cita.
[ Nemanja Avramović @ 04.06.2017. 23:48 ] @
@alessandroistriano: Sredio sam ti kod malo.

Citat:
i takodje, kako da dodam onaj deo, unesite vasum datum rodjenja, onda on odabere iz padajuceg menija, pa da se klikne na dugme i da sistem javlja, punoleti ste ili niste pounoletni?


Taj deo uopšte ne treba da radi klasa nego deo koda koji obrađuje form (i koristi ovu klasu), ovako nekako (pišem napamet, nisam testirao):

Code:

<form action="?" method="POST">
<input type="number" name="id" placeholder="ID" />
<input type="text" name="ime" placeholder="Ime" />
<input type="text" name="prezime" placeholder="Prezime" />
<input type="number" name="starost" placeholder="Starost" />
<button>OK</button>
</form>
<?php

if (!empty($_POST)) {
  $osoba = new User($_POST['id'], $_POST['ime'], $_POST['prezime'], (int)$_POST['starost']);
  if ($osoba->isNotMinor()) {
    echo "Osoba " . $osoba->fullName() . " je punoletna";
  } else {
    echo "Osoba " . $osoba->fullName() . " je maloletna";
  }
}


?>


Btw, metoda isNotMinor() bi trebalo da proverava >= 18

p.s. Ako već hoćeš da korisnik unese datum rođenja a ne starost (u godinama), onda i klasa treba da prihvata (i čuva) datum rođenja korisnika (kao DateTime objekat recimo) i onda na osnovu toga da računa starost, odnosno da li je osoba punoletna ili ne. To je svakako bolje rešenje jer će provera raditi u svakom trenutku, dok sa ovakvim kodom kakav je sad, starost moraš stalno da ažuriraš.

[Ovu poruku je menjao Nemanja Avramović dana 05.06.2017. u 01:02 GMT+1]
[ Semonjara @ 07.03.2018. 16:37 ] @
I koji je na kraju kod za ovaj zadatak? Hvala :)