1.37k likes | 1.56k Views
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
E N D
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 • Un paradigma de programació és una conjunt de conceptes que guien el procés de construcció d’un programa
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
Llenguatges pioners • 1964 SIMULA (Dahl i Nygaard) • 1972 SMALLTALK (Alan Kay, Goldberg, Ingalls) • 1995 JAVA (Sun) • 2000 C# (Microsoft)
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
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
Objectius L’objectiu fonamental de la Programació Orientada a Objectes és donar suport a la reutilització del codi
Característiques fonamentals • Encapsulació • Polimorfisme • Herència
Característiques fonamentals • Encapsulació • Polimorfisme • Herència Programació orientada a objectes
Encapsulació Per conseguir l’encapsulació i l’ocultació de dades s’utilitza el concepte de classe
¿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.
¿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, ...)
¿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"
¿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,...)
¿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
¿Què és l'Herència? Cotxe CotxedeCarreres Turisme TotTerreny
Terminologia OO Tipus de dades Classes Variables Objectes Funcions Mètodes Crida a una Missatge a un funció objecte
JAVA Es tant un Llenguatge de Programació com una plataforma integrada de treball
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
El procés d'execució arxiu.class arxiu.java
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
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"
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
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)
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
Sintaxi • Es molt semblant a la de C i C++ • Els identificadors són sensibles a les majúscules
Tipus de Dades • Tipus predefinits (espai reservat) • Constants o literals • Tipus referència (sempre són adreces)
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)
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).
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};
Tipus de Dades Tipus referència (sempre són adreces i comencen per majúscules) Complex c; c=new Complex(2.1,4.6);
Operadors Assignació: =,+=,-=,*=,/=,%=,&=,^=,|=,<<=, >>= Aritmètics binaris: +,-,/,%,*,&,|,^,<<,>>,>>> Aritmètics unaris: +,-,++,- -, ~,! ++x no és el mateix que x++ Lògics: &&,||,! Relacionals: ==, !=, <, >, <=, >= Pels tipus referència: =,==,!=
Conversió de tipus double quocient; int x=6, y=10; quocient = x / y; // malament quocient = (double) x / y; // bé
Instruccions condicionals if (expressió) instrucció; //blocs {} if (expressió) instrucció1; else instrucció2; test ? expressióSI:espressióNO; minim = x<=y? x:y;
Instruccions condicionals switch(expressió) { case valor1: instrucció1; break; case valor2: instrucció2; break; ... default: instrucciói; }
Instruccions condicionals switch(expressió) { case valor1: instrucció1; case valor2: instrucció2; break; ... default: instrucciói; }
Instruccions iteratives while (expressió) instrucció; for (inicialització;test;actualització) instrucció; do instrucció; while (expressió); break i continue
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
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
Classes i objectes class Punt { public double x,y; } Punt superiorEsquerra = new Punt(); Punt inferiorDreta = new Punt();
Classes i objectes superiorEsquerra.x= 0.0; superiorEsquerra.y =1024.0; inferiorDreta.x=1280.0; inferiorDreta.y= 0.0;
Sortida de dades class HolaMon { public static void main(String[ ] args) { System.out.println("Hola, mon"); } }
Comentaris /* */ // /** */
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
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);}
Crides als mètodes double d; d=superiorEsquerra.dist(inferiorDreta); ó double d=superiorEsquerra.dist(inferiorDreta);