OOP po lopate - this - dis
Sila OOP by sa dala charakterizovať aj týmto magickým slovíčkom this
, tento článok sa nevolá len tak this - dis
.
Ako budete mať radi túto premennú, tak ju niekedy budete mať radi ešte menej a to už ani nehovorím o tom, že niektoré
jazyky si povedali, že this je too mainstream. Poďme sa pozrieť teda na to, čo tento this
znamená.
Ale poďme to urobiť zábavnou formou, predstavme si, že máme v hlave niekoho kto nás riadi.
Ale ako sa to vzťahuje k OOP?
Veľmi jednoducho predstavme si seba človeka a teraz niekde vnútri v nás táto postavička detekuje, že máme málo energie.
Čo teda urobí? Príde a nastaví v nás hodnotu hlad = pravda
. No a my ideme hladať jedlo a končí to takto:
V reči OOP by to vyzeralo takto: Existuje trieda Človek, tá má metódu ži a atribút hlad a aj energiu. V metóde ži, pozeráme stav, či máme dosť energie a keď jej máme málo, tak nastavíme hlad na pravdu, aby sme sa šli napapať. Ako by sme niečo také implementovali? Už sme sa zoznámili s atribútmi a metódami. Tak to teda skúsme.
<?php
class Human
{
public $hunger = false;
public $energy = 5;
public $life = 10;
public function live()
{
while($this->life > 0) {
if ($this->hunger) {
$this->energy = 5;
$this->hunger = false;
} else if ($this->energy == 0) {
$this->hunger = true;
}
echo "Mam: {$this->energy} energie" . PHP_EOL;
$this->energy--;
$this->life--;
}
}
}
$me = new Human();
$me->live();
class Human:
def __init__(self):
self.hunger = False
self.life = 10
self.energy = 5
def live(self):
while(self.life > 0):
if (self.hunger):
self.energy = 5;
self.hunger = False;
elif self.energy == 0:
self.hunger = True;
print(f"Mam: {self.energy} energie")
self.energy = self.energy - 1
self.life = self.life - 1
dano = Human()
dano.live()
class Human {
constructor() {
this.hunger = false;
this.energy = 5;
this.life = 10;
}
live() {
while(this.life > 0) {
if (this.hunger) {
this.energy = 5;
this.hunger = false;
} else if (this.energy == 0) {
this.hunger = true;
}
console.log(`Mam: ${this.energy} energie`);
this.energy--;
this.life--;
}
}
}
let dano = new Human();
dano.live();
// Human.java
public class Human {
private boolean hunger = false;
private int energy = 5;
private int life = 10;
public void live()
{
while(this.life > 0) {
if (this.hunger) {
this.energy = 5;
this.hunger = false;
} else if (this.energy == 0) {
this.hunger = true;
}
System.out.println("Mam: " + this.energy +" energie");
this.energy--;
this.life--;
}
}
}
// Main.java
public class Main {
public static void main(String[] args) {
Human h = new Human();
h.live();
}
}