Personal tools

Clase de tipuri

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
m
m (Adding links to new pages with examples)
 
(2 intermediate revisions by one user not shown)
Line 1: Line 1:
  +
[[Image:Haskelllogo-small-flag-RO-8.jpg|center|Haskell - Clase de tipuri]]
  +
[[Category:Ro]]
 
In limbajele traditionale orientate obiect, o declaratie de clasa defineste o schema caruia i se conformeaza mai multe '''obiecte''' numite instante ale clasei.
 
In limbajele traditionale orientate obiect, o declaratie de clasa defineste o schema caruia i se conformeaza mai multe '''obiecte''' numite instante ale clasei.
 
La instantierea unui obiect trebuie de obicei furnizate VALORI pentru a fi stocate in obiect.Ele au NUMELE si TIPUL scrise in declaratia de clasa.
 
La instantierea unui obiect trebuie de obicei furnizate VALORI pentru a fi stocate in obiect.Ele au NUMELE si TIPUL scrise in declaratia de clasa.
   
In Haskell insa, o declaratie de calsa defineste un tip '''abstract de date''', inzestrat cu anumite functii. (Sunt un fel de clase de structuri algebrice, cum ar fi clasa grupurilor , a inelelor, a monadelor etc).
+
In Haskell insa, o declaratie de clasa defineste un '''tip abstract de date''', inzestrat cu anumite functii. (Sunt un fel de clase de structuri algebrice, cum ar fi clasa grupurilor , a inelelor, a monadelor etc).
 
La instantiere, un '''tip de date concret''' devine instanta a clasei, ocazie cu care trebuie sa precizam cum lucreaza acele functii (specifice clasei) pentru acel tip.
 
La instantiere, un '''tip de date concret''' devine instanta a clasei, ocazie cu care trebuie sa precizam cum lucreaza acele functii (specifice clasei) pentru acel tip.
 
La instantierea unei clase trebuie deci sa definim, sa furnizam, FUNCTIILE necesare. Ele au NUMELE si TIPUL scrise in declaratia de clasa.
 
La instantierea unei clase trebuie deci sa definim, sa furnizam, FUNCTIILE necesare. Ele au NUMELE si TIPUL scrise in declaratia de clasa.
Line 10: Line 12:
 
Exemplu: clasa Eq (predefinita) este clasa tipurilor pentru a caror date exista operatorii egal == si diferit /=. Daca introduceti in clasa Eq niste arbori definiti de dumneavoastra (cu data) aveti ocazia sa definiti cu ocazia instantierii cum vor lucra egalitatea si diferitul pentru acei arbori.
 
Exemplu: clasa Eq (predefinita) este clasa tipurilor pentru a caror date exista operatorii egal == si diferit /=. Daca introduceti in clasa Eq niste arbori definiti de dumneavoastra (cu data) aveti ocazia sa definiti cu ocazia instantierii cum vor lucra egalitatea si diferitul pentru acei arbori.
   
Exemplu: clasa Show e clasa valorilor afisabile, pentru care exista o functie show ce transforma acele valori in string-uri (tiparibile). Mai sunt si alte clase.
+
Exemplu: [[Clasa Show]] e clasa valorilor afisabile, pentru care exista o functie show ce transforma acele valori in string-uri (tiparibile). Mai sunt si alte clase.
   
 
Utilizatorul poate introduce/defini propriile clase cu declaratia '''class''' si pune in clase propriile tipuri cu declarartia '''instance'''. Se admit si un fel de clase conditionate, in care ceva devine membru al clasei daca este deja membru al altei sau altor clase. Vedeti si folosirea lui => la declaratii de tipuri.
 
Utilizatorul poate introduce/defini propriile clase cu declaratia '''class''' si pune in clase propriile tipuri cu declarartia '''instance'''. Se admit si un fel de clase conditionate, in care ceva devine membru al clasei daca este deja membru al altei sau altor clase. Vedeti si folosirea lui => la declaratii de tipuri.
Line 16: Line 18:
   
 
Se mai pot scrie multe lucruri. Este un concept puternic si foarte util la realizarea de aplicatii mari, modulare.
 
Se mai pot scrie multe lucruri. Este un concept puternic si foarte util la realizarea de aplicatii mari, modulare.
Cititi si raspunsul la intrebarea: [[Cum scriem o functie dependenta de tipul argumentului ?]]
+
  +
1. Cititi si raspunsul la intrebarea: [[Cum scriem o functie dependenta de tipul argumentului ?]]
  +
  +
2. Vedeti aici exemplul [[Z4]] al claselor de resturi Z4 (-- click pe [[Z4]] --) . Antrenament: Completati-l si testati-l. Faceti calcule in Z4.
  +
  +
3. Un exemplu (bonus!) de introducere a multimii posibile de solutii pentru ecuatiile de gradul I si al II-lea in [[Clasa Show]] (pentru a afisa rezultatele cum dorim) mi-a fost oferit de Smeu Florin si cu permisiunea lui il reproducem aici.
  +
  +
----
  +
Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro]
 
----
 
----
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell ]
+
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br>
  +
[http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la Intrebarile incepatorului Ro/Haskell. ]

Latest revision as of 06:08, 6 November 2008

Haskell - Clase de tipuri

In limbajele traditionale orientate obiect, o declaratie de clasa defineste o schema caruia i se conformeaza mai multe obiecte numite instante ale clasei. La instantierea unui obiect trebuie de obicei furnizate VALORI pentru a fi stocate in obiect.Ele au NUMELE si TIPUL scrise in declaratia de clasa.

In Haskell insa, o declaratie de clasa defineste un tip abstract de date, inzestrat cu anumite functii. (Sunt un fel de clase de structuri algebrice, cum ar fi clasa grupurilor , a inelelor, a monadelor etc). La instantiere, un tip de date concret devine instanta a clasei, ocazie cu care trebuie sa precizam cum lucreaza acele functii (specifice clasei) pentru acel tip. La instantierea unei clase trebuie deci sa definim, sa furnizam, FUNCTIILE necesare. Ele au NUMELE si TIPUL scrise in declaratia de clasa.

In esenta clasele Haskell sunt colectii de structuri algebrice ! Tipul introdus cu instance in acea clasa este MULTIMEA DE VALORI iar FUNCTIILE pot fi OPERATIILE cu acele valori. Din ele pot rezulta si valori de alt tip.

Exemplu: clasa Eq (predefinita) este clasa tipurilor pentru a caror date exista operatorii egal == si diferit /=. Daca introduceti in clasa Eq niste arbori definiti de dumneavoastra (cu data) aveti ocazia sa definiti cu ocazia instantierii cum vor lucra egalitatea si diferitul pentru acei arbori.

Exemplu: Clasa Show e clasa valorilor afisabile, pentru care exista o functie show ce transforma acele valori in string-uri (tiparibile). Mai sunt si alte clase.

Utilizatorul poate introduce/defini propriile clase cu declaratia class si pune in clase propriile tipuri cu declarartia instance. Se admit si un fel de clase conditionate, in care ceva devine membru al clasei daca este deja membru al altei sau altor clase. Vedeti si folosirea lui => la declaratii de tipuri.


Se mai pot scrie multe lucruri. Este un concept puternic si foarte util la realizarea de aplicatii mari, modulare.

1. Cititi si raspunsul la intrebarea: Cum scriem o functie dependenta de tipul argumentului ?

2. Vedeti aici exemplul Z4 al claselor de resturi Z4 (-- click pe Z4 --) . Antrenament: Completati-l si testati-l. Faceti calcule in Z4.

3. Un exemplu (bonus!) de introducere a multimii posibile de solutii pentru ecuatiile de gradul I si al II-lea in Clasa Show (pentru a afisa rezultatele cum dorim) mi-a fost oferit de Smeu Florin si cu permisiunea lui il reproducem aici.


Pagina indexata la indexul Categories:Ro


<= Inapoi la pagina principala Ro/Haskell.

<- Inapoi la Intrebarile incepatorului Ro/Haskell.