Názory ke článku Java (II) - 1. lekcia
Vysvětlovat dědičnost hned na počátku kurzu není považování za vhodné, protože dědičnost patří mezi nebezpečné konstrukce a bez znalosti souvislostí ji pak začátečníci pouzžívají špatně, aniž by se někde dozvěděli proč.
Právě uvedený styl výkladu je častou příčinou toho, proč začátečníci používají dědičnost špatně: Neupozorňuje je totiž na to, že potomek má být speciálním případe předka, ale vyvolává v nich naopak dojem, že hlavním důvodem zřízení potomka je potřeba přidat nějaký ten atribut či metodu.
Pak se jim ale začnou jejich projekty hroutit a oni dávají vinu OOP, místo aby ji objevili ve špatné architektuře svého návrhu.
Kromě toho tu najednou spadlo z nebe vytváření nových instancí, aniž by se někdo před tím zmínil cokoliv o konstrutorech.
Navíc pojem rozhraní (interface), jehož výklad by měl výkladu dědičnosti předcházet, tu není vůbec zmíněn, přestože v moderním programování je pojmem naprosto základním.
Doporučoval bych autorovi, aby si přečetl knihu, a níž jsem se zmiňoval v komentáři k úvodnímu článku seriálu.
21. 3. 2007
Tak jsem zkusil příklad 3 a nefunguje. Při kompilaci to nahází chyby:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method nastavSerioveCislo(int) is undefined for the type Ferrari
The method zistiSerioveCislo() is undefined for the type Ferrari
The method nastavSerioveCislo(int) is undefined for the type Porsche
The method zistiSerioveCislo() is undefined for the type Porsche
The method nastavSerioveCislo(int) is undefined for the type BMW
The method zistiSerioveCislo() is undefined for the type BMW
at TestAut.main(TestAut.java:8)
Je to můj první program a tak teď nevím, jestli jsem blbej nebo jsem měl smůlu a hned napoprvé je předdělaném programu chyba. Každopádně v třídě Ferrari jsou dvě chyby v komentářích: nejde o nastavování sériového čísla ale barvy. I tak díky za relativně srozumitelný úvod. I když systém závorek, lomítek a tředníků jsem musel odtušit sám. Je to trochu zvláštní, psát tutorial pro lidi, co už uměj C++. Ti žádné tutorialy nepotřebují... Já třeba znám jen základy Basicu, Pascalu a Assembleru, takže je mi tahle syntaxe naprosto cizí a musím polovinu věcí věštit nebo nad nimi mávat rukou a doufat, že to není moc důležité.
29. 3. 2007
public void zistiRychlost() {
return rychlost;
}
Jsem v Javě začátečník, ale void se mi zdá že nevrací nic :-)
2. 5. 2007
prečo niečo nanapíšeš ty? pán dokonalý? kedže máš čas kritizovať typujem, že sa nudíš tak nás niečo nauč!
ačkoli javě moc nerozumim tak mi přide že je z toho jasný že ten void vrací "rychlost" :-)
21. 2. 2009
Trieda TestAut
# // vypis serioveho cisla a ceny
# System.out.println("Seriove cislo BMW: " + mojeBMW.zistiSerioveCislo());
# System.out.println("Pocet dveri Porsche: " + mojeBMW.zistiCenuBMW());
ze by mělo BMW 1200000 dveri?? :smile1:
:smile5: :smile5: :smile5:
25. 10. 2009
Reagoval na komentář od uživatele Eari :
všichni pochopí, že se jedná o překlep :) resp. zkopírování předchozího kódu, kde se zapomněl změnit string.
21. 10. 2011
Sice je to dost starý článek, ale pro případ, že to někde ještě bude číst (jako já) se zmíním o pár věcech, an které jsem narazil.
Jak už to někdo na začátku zmiňoval, příklad s dědičností opravdu není zvolen moc vhodně a pokud to někdo nikdy neviděl, tak to na tomto příkladu správně nepochopí. Jde o to, že subclasses by měly být nějaké speciální případy té rodičovské třídy. Např.: Rodič: Grafický objekt; Potomci: Bod, Úsečka, Kružnice...(viz Virius: Java pro zelenáče).
Další věc už tu také někdo zmiňoval a tou je chyba v
public void zistiRychlost() {
return rychlost;
}
správně to má vypadat
public int zistiRychlost() {
return rychlost;
}
No a poslední věc je, že u základních datových typů chybí známénka u byte a short, které mají rozmezí
-128 až 127 byte
-32768 až 32767 short
24. 1. 2013
Autor clanku spolu s osobou ktora vykonala korekciu maju zavazne nedostatky uz v zakladoch! Je pravda ze datovy typ char obsadzuje 16-bitov ale v ziadnom pripade to nie je neznamienkove cele cislo ale znak (pismeno, cislica, interpunkcne znamienko atd...)!!!
7. 7. 2014
Ferrari mojeFerrari = new Ferrari();
Prosim Vas tomuto som nepochopil preco tam musi byt to prve "Ferrari" ? Neviem ci som odpoved uz mal vediet alebo sa ju dozviem.
21. 4. 2015
Ahojte.
Chcel by som sa opýtať, keď som programoval v Netbeans (8.0.2) kde môžem nájsť niečo také ako je Package explorer v eclipse? Celé som si to naprogramoval ale neviem to nijako spustiť teraz. Ďakujem.
16. 3. 2017
#13 asfasfa
Tipol by som, ze proste tak kaze syntax. nazov pouzitej triedy a za nou zvoleny nazov konkrétneho objektu, ktory sa ma z tej triedy vytvorit