1 / 135

Programació Orientada a Objectes amb JAVA

Programació Orientada a Objectes amb JAVA. 2849- Sistemes Oberts amb Arquitectura J2EE Ramon Mas. ¿Què és la Programació O.O.?. És un paradigma de programació que es basa en el concepte d’OBJECTE

elyse
Télécharger la présentation

Programació Orientada a Objectes amb JAVA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programació Orientada a Objectes amb JAVA 2849- Sistemes Oberts amb Arquitectura J2EE Ramon Mas

  2. ¿Què és la Programació O.O.? • És un paradigma de programació que es basa en el concepte d’OBJECTE • Un paradigma de programació és una conjunt de conceptes que guien el procés de construcció d’un programa

  3. Motivació per l’aparició de l’OO • A finals dels anys 60 es produeix el que s’anomena la crisis del software provocada per la creixent complexitat del desenvolupament de les aplicacions • Es proposa com una de les possibles solucions la reutilització de components

  4. Llenguatges pioners • 1964 SIMULA (Dahl i Nygaard) • 1972 SMALLTALK (Alan Kay, Goldberg, Ingalls) • 1995 JAVA (Sun) • 2000 C# (Microsoft)

  5. Classificació dels LPOO Híbrids Objective-C 1983 B.Cox,T.Love C++ 1985 B.Stroustrup Object Pascal 1985 Apple,N.Wirth Modula-3 1988 Digital i Olivetti CLOS,ECLOS 1988 D.Bobrow,J.des Rivieres Purs Smalltalk 1972 Alan Kay Eiffel 1985 Bertrand Meyer

  6. El principi d’atomicitat • És el que es coneix com ocultament de la informació: l’usuari no pot accedir directament a les parts de l’objecte o a la seva implementació • L’accés es limita a les operacions definides per l’objecte

  7. Objectius L’objectiu fonamental de la Programació Orientada a Objectes és donar suport a la reutilització del codi

  8. Característiques fonamentals • Encapsulació • Polimorfisme • Herència

  9. Característiques fonamentals • Encapsulació • Polimorfisme • Herència Programació orientada a objectes

  10. Encapsulació Per conseguir l’encapsulació i l’ocultació de dades s’utilitza el concepte de classe

  11. ¿Què és una classe? • En el món real hi ha molts d'objectes del mateix tipus. Hi ha milers de cotxes del mateix model i marca i tots ells s'han construït a partir de la mateixa plantilla i per tant tenen les mateixes components. • En termes de programació orientada a objectes, el nostre cotxe és una instància d'una classe d'objectes coneguda com a Cotxe. Una classe és, doncs, un patró per a construir objectes.

  12. ¿Què és un objecte ? • Un objecte és una component software formada per un estat i un comportament . S'utilitza per modelar objectes del món real • Un cotxe, per exemple, té un estat (velocitat actual, ocupants, carburant restant, marxa actual,...) i un comportament (partir, frenar, aturar, canviar de marxa, obrir porta, ...)

  13. ¿Què és un objecte ? • Un objecte guarda el seu estat dins els camps (variables) i mostra el seu comportament amb els mètodes (funcions o procediments) • Els mètodes operen amb l'estat intern d'un objecte i són el mecanisme primari de comunicació entre objectes. • Amagar l'estat intern i obligar a utilitzar qualsevol interacció amb l'objecte a través dels mètodes s'anomena "encapsulació de dades"

  14. ¿Què és l'Herència? • Alguns objectes poden tenir moltes coses en comú amb altres de distint tipus, per exemple els cotxes de carreres, els turismes, els tot terreny, els descapotables,... tots comparteixen les característiques dels cotxes (velocitat actual, ocupants, carburant restant, marxa actual,...) encara que cada un d'ells pot tenir característiques pròpies que els diferencien dels demés (els cotxes de carreres tenen control de les suspensions, els tot terreny tenen tracció a les quatre rodes, els descapotables han de controlar l'estat de la capota,...)

  15. ¿Què és l'Herència? • La programació orientada a objectes permet a les classes heretar estats i comportaments comuns d'altres classes. • En aquest cas Cotxe seria la superclasse (o classe pare) de CotxedeCarreres, de Turisme i de TotTerreny. • CotxedeCarreres, Turisme i TotTerreny són subclasses (o classes fill) de Cotxe

  16. ¿Què és l'Herència? Cotxe CotxedeCarreres Turisme TotTerreny

  17. Terminologia OO Tipus de dades Classes Variables Objectes Funcions Mètodes Crida a una Missatge a un funció objecte

  18. JAVA Es tant un Llenguatge de Programació com una plataforma integrada de treball

  19. JAVA Com a Llenguatge de Programació és: • Orientat a Objectes • Independent de la plataforma • Amb una biblioteca de classes extensa i estàndard • Simple i de propòsit general • Distribuït • Robust • Dinàmic • Segur

  20. El procés d'execució arxiu.class arxiu.java

  21. JAVA • Una plataforma és l'entorn software i hardware en que s'executa un programa (Microsoft Windows, Linux, Solaris OS, Mac OS,...) • La majoria de les plataformes es descriuen amb el Sistema Operatiu i el hardware associat • La plataforma JAVA és una plataforma software que s'executa damunt el hardware d'altres plataformes

  22. JAVA • Té dues components: • La Màquina Virtual Java (JVM) • La Interfície de Programació d'Aplicacions (API) que és una gran i útil col·lecció de components software ja fetes agrupades en llibreries que es coneixen amb el nom de "package"

  23. JAVA 2 (versió actual)

  24. Java 2

  25. Desenvolupament d'aplicacions • Les aplicacions es poden escriure a l'entorn NetBeans IDE, que és un entorn de desenvolupament integrat que simplifica el procés d'escriptura, depuració i execució d'aplicacions • El NetBeans s'executa sobre la plataforma JAVA, això vol dir que es pot executar sobre qualsevol plataforma que disposi de màquina virtual

  26. Desenvolupament d'aplicacions • Necessitarem: • El Java SE Development Kit (JDK) (http://java.sun.com/javase/downloads/index.jsp) • El NetBeans IDE (http://www.netbeans.info/downloads/index.php)

  27. El Llenguatge de Programació JAVA: Variables Variables d'instància (no estàtiques) estats individuals de cada objecte exemple: velocitat actual Variables de classe (estàtiques) un únic valor per tots els objectes derivats d'una classe. exemple: número de marxes Variables locals visibles únicament on es declaren, guarden estats temporals Paràmetres

  28. Sintaxi • Es molt semblant a la de C i C++ • Els identificadors són sensibles a les majúscules

  29. Tipus de Dades • Tipus predefinits (espai reservat) • Constants o literals • Tipus referència (sempre són adreces)

  30. Tipus de Dades Tipus predefinits (o primitius) byte 8 bits short, int, long 16,32,64 bits float, double 32,64 bits char 16 bits (unicode) boolean java.lang.String (no és tècnicament un tipus primitiu però donat el tractament que se'n fa s'hi pot considerar)

  31. Constants o Literals boolean result = true; char capitalC = 'C'; byte b = 100; short s = 10000; int i = 100000; String s= "hola a tots"; int decVal = 26; // decimal int octVal = 032; // octal int hexVal = 0x1a; // hexadecimal double d1 = 123.4; double d2 = 1.234e2; // d1 float f1 = 123.4f; \b (backspace), \t (tab), \n (line feed), \f (form feed), \r (carriage return), \" (double quote), \' (single quote), i \\ (backslash).

  32. Valors per defecte

  33. Tipus de Dades: taules

  34. Tipus de Dades: taules int[ ] unaTauladEnters; //declara la taula unaTauladEnters = new int[10]; //reserva espai int[ ] taula ={10, 20, 30, 40, 50, 60, 70, 80, 90, 100};

  35. Tipus de Dades Tipus referència (sempre són adreces i comencen per majúscules) Complex c; c=new Complex(2.1,4.6);

  36. Operadors Assignació: =,+=,-=,*=,/=,%=,&=,^=,|=,<<=, >>= Aritmètics binaris: +,-,/,%,*,&,|,^,<<,>>,>>> Aritmètics unaris: +,-,++,- -, ~,! ++x no és el mateix que x++ Lògics: &&,||,! Relacionals: ==, !=, <, >, <=, >= Pels tipus referència: =,==,!=

  37. Conversió de tipus double quocient; int x=6, y=10; quocient = x / y; // malament quocient = (double) x / y; // bé

  38. Instruccions condicionals if (expressió) instrucció; //blocs {} if (expressió) instrucció1; else instrucció2; test ? expressióSI:espressióNO; minim = x<=y? x:y;

  39. Instruccions condicionals switch(expressió) { case valor1: instrucció1; break; case valor2: instrucció2; break; ... default: instrucciói; }

  40. Instruccions condicionals switch(expressió) { case valor1: instrucció1; case valor2: instrucció2; break; ... default: instrucciói; }

  41. Instruccions iteratives while (expressió) instrucció; for (inicialització;test;actualització) instrucció; do instrucció; while (expressió); break i continue

  42. Classes i objectes • Una classe defineix l’estructura (especificació) i el comportament (implementació) dels objectes (instàncies) • La interfície ve donada per les seves dades i operacions públiques • Les operacions es fan utilitzant els mètodes

  43. Classes i objectes La declaració d'una classe inclou (per ordre): • Modificadors:public, private,... • Nom de la classe en majúscules (convenció) • Nom de la superclasse (extends) • Llista d'interficies separades per comes • El cos de la classe

  44. Classes i objectes class Punt { public double x,y; } Punt superiorEsquerra = new Punt(); Punt inferiorDreta = new Punt();

  45. Classes i objectes superiorEsquerra.x= 0.0; superiorEsquerra.y =1024.0; inferiorDreta.x=1280.0; inferiorDreta.y= 0.0;

  46. Sortida de dades class HolaMon { public static void main(String[ ] args) { System.out.println("Hola, mon"); } }

  47. Comentaris /* */ // /** */

  48. Declaració de mètodes La declaració d'un mètode inclou (per ordre): • Modificadors:public, private,... • Tipus de retorn • Nom del mètode • Llista de paràmetres entre parèntesi • Llista d'excepcions • El cos del mètode

  49. Mètodes i paràmetres class Punt{ public double x,y; public void clear(){ x=0; y=0;}  public double dist(Punt p){ double difx, dify; difx= x-p.x; dify= y-p.y; return Math.sqrt(difx*difx+dify*dify);}

  50. Crides als mètodes double d; d=superiorEsquerra.dist(inferiorDreta); ó double d=superiorEsquerra.dist(inferiorDreta);

More Related