Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Groovy v příkladech: objektově orientované programování

Dnešní díl seriálu Groovy v příkladech věnujeme objektově orientovanému programování v Groovy. Ukážeme si, jak na tvorbu tříd a objektů, jaké jsou možnosti objektového programování v Groovy a podobně. A protože nejlépe se učí na příkladech, bude tento díl hlavně o nich.

Seriál Groovy v příkladech

Všechny díly seriálu
Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

OOP v Groovy

Groovy, stejně jako jeho mateřská Java, je silně objektově orientovaný jazyk. Na rozdíl od Javy není nutné tvořit hlavní třídu, což ale jazyku na jeho objektovosti rozhodně neubírá. Ukažme si tvorbu třídy v Groovy:

class Dog{
  name

  bark(){
    println "Haf, haf!"
  }

}
myDog = new Dog()      // vytvoreni nove instance tridy Dog
myDog.name = "Mollie"  // pojmenujeme naseho psa (promenna objektu name)
myDog.bark()           // a ted si trochu zastekame

Na výstup dostaneme pochopitelně „Haf, haf!“ A teď se podíváme ještě na jednu, již o něco složitější ukázku (přejato z JavaBeat.net):

// vytvorime novou tridu
class Product{

    // promenne objektu
    private String name
    private def price
    def vendor

    public Product(){
    }

    Product(name, price, String vendor){
        this.name = name // pristup k promenne objektu z vnitrku tridy
        this.price = price
        this.vendor = vendor
    }

    public String getName(){
        return name
    }

    def setName(name){
        this.name = name
    }

    public String getPrice(){
        return price
    }

    def setPrice(price = 100.00){ // predani defaultni hodnoty promenne price
        this.price = price
    }

    def toString(){
        return "Name = $name, Price = $price, Vendor = $vendor";
    }

    static main(arguments){

        def p1 = new Product("Mobile", "10000", "Nokia")
        println(p1.toString())

        def p2 = new Product(name: 'Laptop', price: "540000", vendor: "IBM")
        println(p2.toString())

        def p3 = new Product()
        p3['name'] = "Television"
        p3.'price' = "45454"
        p3['vendor'] = "Samsung"
        println(p3.toString())

        def p4 = new Product(name: "DVD Player", vendor: "TCL")
        p4.setPrice();
        println(p4.toString())
    }
}

Výstup:

Name = Mobile, Price = 10000, Vendor = Nokia
Name = Laptop, Price = 540000, Vendor = IBM
Name = Television, Price = 45454, Vendor = Samsung
Name = DVD Player, Price = 100.00, Vendor = TCL

Nic moc překvapivého, jak vidíte. Definice třídy v Groovy je na půl cesty mezi kódem v Javě a kódem v Pythonu či Ruby. Proměnné objektu se z vnitřku třídy volají this.metoda, třída se tvoří klíčovým slovem class, metoda klíčovým slovem def, proměnná či metoda může být public nebo private.

Groovy podporuje tzv. defaultní parametry, což jsou defaultní hodnoty, které se přiřazují při definici metody jednotlivým proměnným a kterých proměnná nabude v případě, že její hodnota nebyla při volání metody specifikována. Defaultní hodnoty se předávají takto:

TIB2012

       
def setPrice(price = 100.00){
    this.price = price
}

Nyní, zavoláme-li metodu setPrice bez parametrů, proměnná price nabude defaultní hodnoty 100.00. Prosté a užitečné.

Příště

Tak, a to je pro dnešek vše. V příštím pokračování našeho miniseriálu se budeme věnovat zajímavým projektům v Groovy. Například webovému frameworku Grails a sestavovací utilitce Gant. Obě jsou inspirovány svými protějšky v Ruby – Ruby on Rails a Rake.

Odkazy

Jakub Šťastný

Jakub Šťastný

Jakub Šťastný byl v letech 2007 až 2008 redaktorem serveru Root.cz. Mezi jeho zájmy patří Linux, programování a typografický systém TeX.

Školení: Django framework: Struktura a základy vývoje (nejen) webových aplikací

Django je vyspělý webový framework napsaný v jazyce Python, který podporuje extrémně rychlý vývoj společně s dodržováním principů dobrého návrhu. Snaží se co nejvíce automatizovat a drží se principu DRY (z anglického Don't Repeat Yourself — neopakuj se).

  • Instalace potřebného softwaru
  • Programování v Pythonu: příkazy, funkce, datové typy, moduly, objekty, výjimky
  • Struktura aplikace v Djangu
  • Typické záležitosti webových aplikací: Napojení na databázi, zpracování vstupu od uživatele, přihlášení či generování dynamického obsahu.
  • Implementace principu MVC: modely, pohledy (views) a šablony
  • Seznámení s užitečnými komponenty frameworku Django
  • Šikovné praktiky

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,34

Seriál Groovy v příkladech

Všechny díly seriálu

Přehled názorů

Proc?
Abraxis 11. 1. 2008 01:53
Nový
├ 
Re: Proc?
goddard 11. 1. 2008 07:55
Nový
│
└ 
Re: Proc?
Milan 11. 1. 2008 08:08
Nový
└ 
Re: Proc?
MD 11. 1. 2008 11:52
Nový
Naco "def" pri premennej/atribute ?
MikRom 11. 1. 2008 09:43
Nový
├ 
Re: Naco "def" pri premennej/atribute ?
MikRom 11. 1. 2008 11:17
Nový
│
└ 
Re: Naco "def" pri premennej/atribute ?
goddard 11. 1. 2008 11:32
Nový
└ 
Re: Naco "def" pri premennej/atribute ?
Milan 11. 1. 2008 12:54
Nový
 
└ 
Re: Naco "def" pri premennej/atribute ?
MikRom 11. 1. 2008 15:00
Nový
 
 
└ 
Re: Naco "def" pri premennej/atribute ?
Filip 8. 2. 2008 00:10
Nový
Nestastny priklad
littleli 11. 1. 2008 12:18
Nový
Havni trida
krtek 11. 1. 2008 12:42
Nový
└ 
Re: Havni trida
Milan 11. 1. 2008 12:51
Nový
closure verzus funkcia
MikRom 11. 1. 2008 14:20
Nový
regex
MikRom 11. 1. 2008 14:47
Nový
└ 
Re: regex
MikRom 11. 1. 2008 15:46
Nový
zoufale slabý příklad Groovy
truhla 11. 1. 2008 22:25
Nový
└ 
Re: zoufale slabý příklad Groovy
mikrom 12. 1. 2008 12:06
Nový
 
└ 
Re: zoufale slabý příklad Groovy
truhla 13. 1. 2008 16:04
Nový
Treba vyckat
Uzivatel 13. 1. 2008 11:30
Nový
Nedá mi to...
Milan 13. 1. 2008 14:18
Nový
Ten privní příklad je špatně, ne?
Guido 14. 1. 2008 09:43
Nový
└ 
Re: Ten privní příklad je špatně, ne?
Guido 14. 1. 2008 09:58
Nový
 
└ 
Re: Ten privní příklad je špatně, ne?
MikRom 14. 1. 2008 20:36
Nový
neni lepsi jednotna syntaxe?
uf 5. 8. 2008 07:20
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem