Classe (ordinador)

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca

Una classe de programació orientada a objectes és una construcció d’un llenguatge de programació utilitzat com a plantilla per crear objectes . El model inclou atributs i mètodes que compartiran tots els objectes ( instàncies ) creats que pertanyen a la classe. Un objecte és, de fet, una instància d’una classe.

Una classe s’identifica com un tipus de dades abstractes que poden representar una persona, un lloc o una cosa, i és l’abstracció d’un concepte implementat en un programari . Bàsicament, defineix un estat intern, les dades del qual s’emmagatzemen en els anomenats membres variables o atributs, i restringeixen el comportament de la qual és la representació, descrita per blocs de codi reutilitzables anomenats mètodes .

Descripció

Anàlisi orientada a objectes

El terme classe pot significar, segons el context, una categoria d'objectes, un tipus de dades o la implementació d'un tipus de dades. Aquests tres significats es troben (principalment) respectivament en l' anàlisi orientada a objectes , en llenguatges de disseny i programació orientats a objectes, orientats a objectes .

L' anàlisi dels requisits , o simplement l' anàlisi, constitueix una de les primeres etapes del cicle de vida del programari i precedeix almenys les fases de disseny i implementació . El propòsit d’aquesta fase és entendre, aclarir i documentar què ha de fer el sistema de programari o quines són les funcions que necessiteu; No tracta en lloc de definir com s’implementen aquestes característiques (si no, a un nivell molt aproximat , per a una estimació aproximada dels costos ).

Parlem d’ anàlisi orientat a objectes si aquesta fase es realitza mitjançant tècniques basades en un metamodel orientat a objectes o, més simplement, si l’anàlisi fa ús de les eines conceptuals de les tecnologies orientades a objectes, en primer lloc el concepte de " classe ".

Anàlisi orientat a objectes es poden distingir dues subactivitats: l' anàlisi del domini i l'anàlisi dels requisits, adequadament anomenats. L’anàlisi del domini consisteix en primer lloc a aclarir quins són els conceptes importants que haurà de tractar el sistema a desenvolupar i a especificar el màxim de detalls possible el significat d’aquests conceptes i les relacions que els relacionen entre si. .

Per exemple, durant la fase d’anàlisi d’un sistema de programari del domini bancari, caldrà investigar a fons com funciona un compte corrent, quines relacions poden enllaçar diferents comptes, comptes a sucursals, sucursals a clients, etc. Posteriorment a la caracterització precisa de la part de l'entitat del domini es procedirà a estirar els requisits del sistema real, o descriure com el sistema forma part del domini i interactua amb ell.

En l'anàlisi orientada a objectes, la "classe" és el concepte fonamental utilitzat per descriure les entitats del domini. Una classe representa una categoria d'entitats (per exemple, comptes corrents) en termes de dos aspectes:

  • l' estat de l'entitat d'aquesta categoria, descrit en termes d'un conjunt d' atributs que poden variar amb el pas del temps; per exemple, cada compte té un saldo que varia al llarg del temps;
  • el comportament d'aquestes entitats, en termes de les operacions que aquestes entitats poden realitzar o que se'ls poden fer; per exemple, podeu treure diners d'un compte corrent. Les operacions s’analitzen establint (també) com la seva aplicació canvia l’estat (la retirada de diners disminueix la mida del saldo).

Les entitats individuals es diuen instàncies (és a dir, exemples, casos especials) de la seva classe. Per tant, el meu compte corrent és una instància de la classe del compte actual .

El domini model que definirà l’anàlisi es pot millorar mitjançant una sèrie d’informació addicional sobre les relacions entre les diferents classes identificades. Entre els exemples de relació generalment més importants es poden citar els següents:

  • Les associacions especifiquen relacions entre instàncies de classes; per exemple, el fet que els comptes corrents siguin pagadors als clients bancaris defineix una associació entre la classe de compte corrent i la classe de client ;
  • les agregacions són un tipus particular d'associació que té lloc quan les instàncies d'una classe s'han de considerar com a parts d' instàncies d'altres classes; per exemple, una instància de la classe Car inclou com les parts del cas de les classes de rodes , el pistó, el parabrisa , etc. El límit entre associacions genèriques i agregacions no sempre és clar.
  • les relacions ISA (relació "és a") especifica que una classe s'ha de considerar com una subcategoria o subclasse d'una altra (anomenada superclasse); per exemple, el compte corrent de la classe es podria descriure com una subcategoria de la classe de serveis bancaris . El nom de la relació es desprèn del fet que es pot dir amb prudència, per exemple, que un compte bancari és un servei bancari ("és un", ISA). Tingueu en compte que això representa una relació exclusivament entre classes i no entre instàncies. L’informe ISA té un paper important en la racionalització d’un model. Un aspecte fonamental és que es pot suposar que una subclassa està dotada de tots els atributs, operacions i associacions de la superclassa; possiblement pot tenir-ne d'altres, relacionades amb les característiques específiques de la subcategoria d'objectes que descriu. Per exemple, si un servei bancari té un cost anual i s’ha de pagar a un client, tot això continua essent cert per a un compte bancari; aquest últim també té un atribut de saldo que no necessàriament té sentit per a tots els serveis bancaris (i, per tant, no apareixen a la classe de serveis bancaris més generals).

En disseny orientat a objectes

El disseny és una fase de desenvolupament de programari conceptualment posterior anàlisi del domini i anàlisi de requisits, en què sorgeix el problema de com fer un sistema de programari que compleixi els requisits explicats anteriorment. El resultat d’aquesta etapa hauria de ser un conjunt d’ especificacions de disseny prou detallades i prou precises per a ser utilitzades com a única referència per a la següent fase d’ implementació , és a dir, per a la construcció del propi producte de programari.

El disseny orientat a objectes s'utilitza generalment en els casos en què s'espera una implementació també orientada a objectes, en un llenguatge adequat com C ++ o Java . De fet, aquests llenguatges tenen un concepte de classe (vegeu la secció següent) estructuralment similar al que s’utilitza a la fase d’anàlisi. En aquest cas, el disseny consisteix en un perfeccionament i ampliació del model de producte a partir de l’anàlisi. Aquesta transformació del model es produeix sobre la base de dues directrius generals:

  • identificar tots els conceptes nous relacionats amb l’ arquitectura del sistema o que tinguin a veure amb la manera com s’aconseguirà el sistema, però que no coincideixin amb els conceptes de domini. Els conceptes d’aquest tipus poden ser terminal, usuari autoritzat, adreça IP, dades bàsiques , etc. Tots aquests conceptes no estan relacionats amb el domini, sinó exclusivament amb el sistema, i, no obstant això, es presten a ser descrits de nou a través del concepte de classe.
  • les classes del model resultant (tant les derivades de l'anàlisi com les relacionades amb l'arquitectura del sistema) se solen detallar introduint informació addicional que ajudarà a orientar la implementació; per exemple, estableixen els tipus d’atributs i paràmetres d’operacions. Es pot establir, per exemple, que el saldo d'un compte corrent és un número amb coma i, de manera similar, l'operació "retirar" requereix l'especificació d'un número amb una coma que representi la suma a retirar.

Podem dir que en aquesta etapa el sistema es descriu en termes de tipus de dades abstractes .

En llenguatges orientats a objectes

Una de les característiques clau de l'enfocament orientat a objectes és la major "fluïdesa" (en comparació amb enfocaments anteriors, com el procedimental ) amb la qual cadascuna de les fases d'anàlisi, disseny i implementació en el flux posterior. Aquesta fluïdesa es deu al fet que els llenguatges orientats a objectes proporcionen un conjunt d’eines sintàctiques i semàntiques que són una transposició directa de les eines conceptuals que s’han discutit pel que fa a les fases d’anàlisi i disseny.

Una construcció de llenguatge orientat a objectes proporciona una classe d’estructuralment corresponent a la classe de concepte abstracte esmentada anteriorment: una classe descriu un tipus d’objectes (una categoria d’entitats) en termes d’un conjunt de variables internes o variables d’ instància que tenen aquests objectes. (~ atributs) i un conjunt d'aquests procediments mètodes que es poden realitzar (~ operacions). Una variable interna d'una classe que conté una referència a una instància d'una altra classe pot correspondre a una associació; una variable interna que conté directament una instància real es pot considerar una transposició d’implementació del concepte d’agregació; i finalment l' herència correspon directament a l'informe ISA.

Si des del punt de vista històric i tècnic, la classe de llenguatges orientats a objectes es pot considerar com una evolució del registre de llenguatges procedimentals com C o Pascal , implica un enfocament completament diferent de la programació, en què les dades els tipus , acompanyats de les seves operacions (mètodes) esdevenen centrals. La novetat més significativa d’aquest enfocament està relacionada amb els conceptes d’ herència , encapsulació o ocultació d’informació i polimorfisme .

A la UML

UML és una notació gràfica semi-formal per descriure un sistema (no necessàriament programari) que crea un model basat en els seus conceptes d’orientació cap als objectes. Atès que totes les etapes del desenvolupament de programari , orientades a objectes, utilitzen eines conceptuals similars (classes, associacions, relacions ISA), UML es pot utilitzar uniformement en totes les fases. La uniformitat de la descripció resultant té diversos avantatges:

  • una major facilitat per verificar el compliment de cada fase de les restriccions imposades per l'anterior (per exemple, verificar que la implementació sigui compatible amb els requisits);
  • major modificabilitat del conjunt de models produïts; per exemple, a partir d'una modificació del model d'anàlisi (a causa d'un canvi en els requisits) sovint és senzill (o fins i tot trivial) derivar quins canvis s'han de fer en conseqüència al model de disseny i, per tant, a la implementació.

Precisament perquè les classes es troben entre les eines centrals que permeten relacionar models d’anàlisi, models de projectes i implementacions de programari, el concepte de classe a UML té una semàntica més abstracta i conceptual o general que en els llenguatges de programació.

Exemples

Un exemple genèric d'un codi font d'una classe a Java és:

 // definició, cos o plantilla de la classe
     '' ' Classe pública ' '' <nom_classe> {
     
      // atributs o membres de la classe
     tipo_attributo1 < atribut1 >;
                ...
     tipo_attributoN <attributoN>;

     // constructor per defecte (sense paràmetres)
     '' 'Públic' '' <nome_classe_maiuscolo> () {
     }

     // constructor amb paràmetres
     '' 'Públic' '' <nome_classe_maiuscolo> (tipo_parametro1 param1, ..., tipo_parametroN paramN) {
     
          <Atribut1> = param1;
               ...
         <AttributoN> = paramN; 
       
     }

      // mètode membre
      '' 'Públic' '' tipo_ritorno <obj> (tipo_parametro1 param1, ..., tipo_parametroN paramN) {
            ... 
          '' Blocco_istruzioni '';
            ...
      '' 'Retorn' '' <oggetto_tipo_metodo>;
     }

      // mètode no membre (estàtic)
      '' 'Public static' '' tipo_ritorno <obj> (tipo_parametro1 param1, ..., tipo_parametroN paramN) {
            ... 
          '' Blocco_istruzioni '';
            ...
      '' 'Retorn' '' <oggetto_tipo_metodo>;
     }

     // punt d’entrada del programa o mètode d’execució
     '' 'Public static' '' void main (String [] args) {
          ...
        \\ instancia l' objecte de la classe
        <Nom_classe> foo = nou <nom_classe> ();
      
        \\ anomenat constructor per assignar valors als atributs de l' objecte dell '
        foo. <Fabricant> (parametri_passati);
   
        \\ trucades o mètodes de trucades a l' objecte Member 
        foo. <Obj> (parametri_passati);
               ...
        \\ crida o invoca el mètode estàtic
        <Nome_metodo_statico> (parametri_passati); 
               ...
     }
 }

Un exemple genèric de codi font de classe C # és:

 classe pública <nom_classe>
{
    // Atributs o membres de la classe
    tipo_attributo1 < atribut1 >;
    ...
    tipo_attributoN <attributoN>;

    // Constructor per defecte que no té paràmetres
    públic <nom_classe> ()
    {
    }

    // Constructor amb paràmetres
    public <nom_classe> (tipo_param1 param1, ..., tipo_paramN paramN)
    {
        <Atribut1> = param1;
        ...
        <AttributoN> = paramN; 
    }

    // Mètode membre
    public tipo_ritornato <obj> (tipo_param1 param1, ..., tipo_paramN paramN)
    {
        // Lògica del mètode
        ...
        
        // Torna
	    retorna <oggetto_tipo_metodo>;
    }

    // Mètode estàtic
    public static tipo_ritornato <obj> (tipo_param1 param1, ..., tipo_paramN paramN)
    {
        // Lògica del mètode
        ...
        
        // Torna
	    retorna <oggetto_tipo_metodo>;
    }

    // Punt d’entrada del programa o mètode d’execució
    public static void main (String [] args)
    {
        // Instància objecte de la classe
        <Class_name> object_name = new <class_name> (eventuali_param);
      
        // Crida a un mètode membre de l'objecte
        nom_objecte. <obj> (eventuali_param);

        // Crida a un mètode estàtic de l'objecte
        nom_objecte . <nom_metodo_statico> (eventuali_param);
    }
}

Articles relacionats

Altres projectes

Informàtica Portal de TI : accediu a les entrades de Viquipèdia relacionades amb TI