OvaS
Administrator

Data inscrierii: 29/Aug/2007 Mesaje: 68 Localitate: Calarasi |
|
Totul in Java este un obiect ! |
|
Ma "joc" prin Java , de aproximativ o luna . Mi'a "venit" intr'o zi de joi sa ma apuc sa invat Java. Tin sa mentionez ca uram Java , fara sa stiu ce "putere" are defapt.
Odata , intrat in aceasta lume "fantastica" a programarii pe obiecte , in Java , te lovesti te o bariera dura numite : de la programare procedurala ( C'ul , Pascal ) la OOP ( Java ). Multi sunt tentati pe inceput sa se intoarca din drum , deoarece clasele , obiectele , constructori te scot din minti la inceput. Te gandesti la inceput , oare de ce am eu necesitate de atatea clase , oare ce este un obiect si de ce Java este spus ca ar fi : OOP pur . De ce oare am trebuință de mai mult de o clasa intr'un program necomplicat , ce reprezenta variabilele de clasa si cele de instanta , ce inseamna o metoda si cu ce se deosebeste ea de o procedura/functie ( C , Pascal ).
Ieri am spus prima data , dupa o luna de Java : " wow ! Java chiar pune punctul pe I dpdv al OOP-ului". Pana si un simplu font este un obiect , o instanta a unei clase de Font. Curios nu ? ( sper sa ma fi exprimat bine ).
Am invatat in C despre thread'uri ( sau fire de executie , ca suntem romani ) . Nu am sa vorbesc acum despre ce sunt firele de executie , multi stiu si cei ce nu stiu pot sa caute . Chestia interesanta ce am aflat'o singur azi a fost urmatoarea. Stateam in fata IDE'lui si ma gandeam o chestie. Cum sa creez cate un fir de executie diferit pentru mai numeroase chestii. Practic am modelul , o clasa extends Thread , trebuia doar sa creez obiecte ale acelei clase :shock: Asta m'a socat , ( daca am inteles eu bine ce se intampla acolo ) si am spus : " Wow , OOP is really fun " .
Chestia interesanta , ca eu ma gandeam cum sa fac pentru fiecare chestie de care am nevoie un alt thread . Ma gandeam sa scriu de fiecare data o clasa extensibila la clasa Thread , nu , raspunsul era foarte rudimentar creez un obiect al acelei clase ( ex : class exemplu extends Thread ) , in care definesc simplu un constructor care face fiecare obiect diferit unul de altul ( pentru ce am nevoie de la fiecare ) , toate pornind de la ceeasi instanta ( clasa exemplu extends Thread , declarata mai sus ). Practic am inteles si ce rol are constructorul , clasele si obiectele .Java chiar e pusa pe treaba cu programarea pe obiecte.
Dar hai sa recapitulam , nitel cu obiectele , clasele si celelelate , pentru ca aceste randuri sa fie de folos viitorilor programatori care nu s'au apucat inca de Java.
1. Ce este o clasa in Java ?
- practic o clasa in Java ( dupa cuvintele mele ) , este modelul pentru un obiect. Java ne ofera un mare avantaj . Multi ar putea spune : " E simplu , clasa in Java este un fel de " record sau structura ( vezi Pascal / C ) , dar cum am aflat si eu acum ceva timp , nu este chiar asa .
-totusi , ce este o clasa ? O clasa este mai mult decat o structura ( o organizare de date de diferite tipuri , ca in alte limbaje de programare ) , este un model ( care poate contine mai mult decat date , cat si proceduri si constructori ) pentru un viitor obiect. Ca sa intelegem mai bine ce este o clasa , trebuie sa ne prindem ce este acela un obiect.
2.Ce este un obiect in Java ?
- Sa dau un exemplu simplu , din viata de zi cu zi. Avem o clasa numita om . Noi toti suntem oameni , neputand la socoteala ca unul e mai mic , mai mare ..
Un obiect este un om , pe care il imbracam si il punem sa faca in societate o anumita chestie ( prin metode , vom discuta mai tarziu ). Deci ce este un obiect ? Este sa spunem asa o instanta a unei clase . Clasa este este ceva " general " si obiectul este ceva " unicat ".
Clasa - generalitate ( in mare cam tot ce ar putea contine toate obiectele ) , obiectul - este o instanta a unei clase cu trasaturi specifice , dar facand parte din clasa de unde a fost instantiat.
3.Ce este un constructor in Java ?
- a-ti mai auzit acest concept si pe la Pascal , si poate multi nu v'ati dat seama pana acum , cam cu ce se mananca , si cam ce reprezinta acest constructor .
- practic un constructor ( si teoretic , in fine ),reprezinta modul in care o instanta a unei clase ( un obiect ) poate fi instantiat cu anumite trasaturi , decat default ( toate cele pe care le are deja clasa ).
- nu v'ati prins , nu'i asa ( ma refer la cei care de abia intra in aceasta lume a OOP-ului ,fie pe usa numita Java , sau pe oricare alta ). O clasa poate contine : variabile ( fie ca sunt de clasa , fie ca sunt de instanta - pentru a face obiecte ) , poate contine metode ( asa sunt denumite generic , ceva de genu proceduri / functii din Pascal / C ) , doar ca aici returneaza o valoare sau sunt de tip void. In Pascal de exemplu , la scoala a'ti invatat ca aceste proceduri executa un anumit sir de instructiuni si functiile returneaza valori . In Java , de exemplu , se exista metode de tip void , sau metode care returneaza un anumit tip de date ( un obiect ). Daca vedeti ceva care nu returneaza nici un tip de date , acela este un constructor , ca tot vorbeam de constructori , la acest capitol . Asa diferentiaza clasa , metodele de constructori. Modest nu ? Constructori nu returneaza nimic , ei au rol doar de instantiere a unui obiect. Practic totul in Java este un obiect.
-deci constructorul este ceea ce face un obiect "diferit" de altul si prin intermediul unor parametri ii da anumite calitati. Nu este nevoie sa definim un constructor , pentru că absolut orice clasa , are deja unui definit default , fara nici un parametru . Dar daca avem nevoie sa facem un obiect care sa contina anumiti parametri ( variabile din clasa din care face parte ) , atunci putem sa ne definim noi singuri un constructor ( P.S : nu uita ca acest constructor nu returneaza nici o valoare ,si asa este el diferit de metode ).
4. Ce este o metoda in Java ?
-practic o metoda , in Java , este ceva asemenator cu o procedura , sau mai bine zis o functie in alte limbaje de programare procedurale (ca C ori Pascal).
-o metoda poate fi de tip void , nu returneaza o valoare , si are rolul ( daca are si parametri ) , sa efectueaza niste chestii , asupra statement-urilor pe care le inglobeaza.
-metodele sunt optime , pentru a transforma variabile intre clase , ca un exemplu.
5. Ce sunt variabilele in Java ?
-variabilele in Java sunt de doua soiuri , de clasa sau de instanta.
-variabilele de clasa , se declara cu un static in fata , acesta inseamna ca ele au un solitar loc definit in memorie , si daca le apelam in mai multe obiecte , se va utiliza acelasi spatiu de memorie.
-variabilele de instanta , au propietatea ca se aloca un alt spatiu de memorie ( cu acelasi nume ) pentru fiecare obiect in parte , declarat .
Nu pot , nici pe departe , sa spun ca mai sus am facut o prezentare nici macar generala a OOP-ului in Java. Am incercar sa spun cateva ceva despre : clase , obiecte , constructori , variabile si metode.
Ce pot sa mai spun ca personal m'a impresionat la acest limbaj de programare ?
-in debutantul si in primul rand , contine o "sumedenie" de clase , deja scrise de alti programatori , care iti vor usura munca. Haideti sa dau un exemplu banal. In Java de exemplu sunt o gramada de clase , care de abia asteapta sa fie instantiate de obiecte , care se ocupa de Stringuri , TextArea si mult altele ( am dat doua exemple , care mi'ai trecut la prima gandire prin creier ) . O chestie interesanta , care mi'a ramas in minte , este ca avem o optiune la TextArea ( awt ) , ca textul care este introdus sa fie : Word Wrap ( cred ca ati mai vazut prin Notepad ) . Practic nu mai e nevoie sa ne chinuim noi ca programatori sa'i spunem la TextArea , vezi daca trece peste marimea default , sa dam impartim textul in bucati si sa'l afisam pe un rand mai jos . Alti programatori deja au facut asta , si noi putem folosi aceasta frumoasa optiune. Desigur e un exemplu banal , mai sunt multe , si nespus de multe altele.
-unii spun ca ne'ar scapa , de multele erori care le dau pointeri ( care apar in Pascal , de exemplu sau C ). Apar si aici referinte , la locul din memorie ocupat de un anumit obiect , dar nu sunt cu adevarat pointeri bruti din limabaje precum Java.
-un avantaj mare , e ca daca stii C ( sau Pascal ) , poti invata foarte usor Java ( da este adevarat , aveti aici un suspect , care a reusit performanta , sau inca incearca pentru mult timp de acum inainte ).
Ce am obsevat , este ca se recomanda daca stii Pascal, sa inveti C . Este mai usor sa treci de la C la Java , căci Java fiind un limbaj hibrid folosesti foarte mult structurile aparute in C/C++ . Deci daca stii Pascal ( te descurci ) poti invata extrem usor C si/sau C++ si trece cumplit de usor ( in o chestie de cateva saptamani ) sa intelegi cam cum si ce se intampla in Java.
Desigur , la întâia vedere vezi ce multi zic : "Java papa multe resurse". La inceput te gandesti : "Eh .. am îndeajuns RAM si procesoru' bun , si face faþa " , dar nu este chiar asa. Eu am pornit de exemplu cu NetBeans , dupa ce am citit despre el mi'am dat seama ca este un IDE bunicel , desi sunt si opinii nu chiar asa de benefice despre el. Am observat ( si o spun sincer ) , ca papa multe resurse , si combinat cu mediul Windows ,daca te duci prea tare duce la reboot si FULL RAM si CPU cycles. Deci da , mananca resurse , dar nu asta trebuie sa fie o povara pe bratele viitorului programator.
Am vazut , ca Java ,este cerut de multe firme . Peste tot se cauta programatori Java.De ce ? Dupa parerea mea , este un limbaj in care poti face multe , si datorita calitatilor care le are , neluand in seama bugurile si parerile pesmisite este un limbaj de programare care personal mie imi place.
Ce m'a impresionat e ca il poti folosi si la appleti ( multa vreme nu am stiut ce sunt acestia si acum am aflat ). + Avantajul major ( cum ca Java este o masina virtuala ) este va avand JVM'ul instalat putem rula softuri scrise si compilate sub Java pe mai multe platforme.O sa vedeti ca aceste caracteristici sunt scrise pe la inceputul fiecarei carti de Java.Sunt o gramada de cartulii de Java si in limba romana , doar internetul iti sta la indemana , doar sa vrei in ziua de azi.
Surfand internetul , in ciuda erori : "Java Null Pointer Exception" ( parca Java nu avea pointeri , e plin de pointeri , totul aproape este un pointer , dar nu se ocupa programatoru de aceasta chestie direct ) am gasit urmatorul citat :
Optimism is an occupational hazard of programming: feedback is the treament. (Kent Beck)
Stiu ca multi s'au gandit : hai sa ne lasam batuti , nu vom reusi niciodata , dar majoritatea continua.E ca si matematica : transpiratie in procent de 99% si 1 % inspiratia , cam asa e si cu programarea in mare.
Sper sa ( desi poate am spus multe lucruri gresite , insa sunt la inceput ), sa fie ajutat pe cineva , sau sa ajute in viitorul apropiat , pe un viitor programator. Bafta !
|
|