Skip to main content

Elemento: Classe

Una classe è un'unità logica con dati e operazioni incapsulati. Rappresenta anche un tipo di variabile che può essere istanziato. Quando l'istanza di una classe viene assegnata come variabile a un'altra classe, si parla di ruolo o espressione della classe.

Una classe può fornire un metodo FB_Init che viene chiamato durante l'inizializzazione di un'istanza.

Una classe può ereditare da un'altra classe. Questa relazione è chiamata generalizzazione.

Una classe può istanziare un'altra classe. Questa relazione è chiamata composizione.

Una classe può riconoscere un'altra classe. Questa relazione è chiamata associazione.

Una classe può essere una POU, una libreria POU (tipo: programma), un blocco funzione o una funzione.

_uml_img_class_all.png

(1)

Icone di comando

Suggerimento

Quando una classe è selezionata, i suoi simboli di comando sono visibili.

(2)

Intestazione

  • ID per il tipo POU

    • <<program>> per un programma (PRG)

    • Nessun ID per un blocco funzione (FB)

    • <<function>> per una funzione (FUN)

    • <<library>> per una libreria POU

    • <<missing>> per una libreria POU la cui libreria non è integrata nel progetto

    • <<compiled>>: Per una libreria POU da una libreria compilata

      Nota

      Non tutte le informazioni potrebbero essere disponibili.

  • Nome della POU

(3)

Elenco di attributi

La voce ha il seguente formato: <attribute name> : <attribute type> <label>

Esempio: fbBase : FB_BaseClass

ID: <label>

  • {input}: Per una variabile di VAR_IN scopo

  • {output}: Per una variabile di VAR_OUT scopo

  • Nessuno: ID per una variabile interna invisibile (digitare: VAR)

(4)

Elenco di operazioni (azioni, metodi o proprietà)

Esempio:

ACT_DoIt(){action}

METH_DoIt(...) DWORD

PROP_Counter Set(...)

PROP_Counter Get (...)

Una voce per i metodi ha il formato:

+ <method name> (<variable name> : < variable type> ) <return type>

In caso di ingresso per an _cds_icon_interface_property.png proprietà dell'interfaccia, lo speciale Set e Get sono elencati i metodi.

Una voce per le azioni ha il formato:

<action name> () {action}

Per <etichetta> vale quanto segue:

  • Una sola azione è identificata con il {action} ID.

  • Un metodo o una proprietà di interfaccia _cds_icon_interface_property.png (metodo speciale) non hanno un ID.

Proprietà

Identificatore

Nome della classe

Esempio: Manager_A

Input dell'utente

La classe dispone di elenchi di attributi e operazioni espansi identificati con _uml_icon_checkbox_minus.png. Le icone dei comandi sono visibili sopra la classe. Puoi usarli per inserire elementi di relazione.

Azione

Risultato

Nel BaseClass classe, fare clic su _uml_icon_delete_shallow.png icona di comando.

Il BaseClass class viene eliminata solo dal diagramma di classe. L'oggetto stesso rimane nel progetto.

Suggerimento

Dopo essere stata eliminata, la classe viene visualizzata nel file Cassetta degli attrezzi guarda dentro Riferimenti incrociati in arrivo o Riferimenti incrociati in uscita. Il requisito per questo è selezionare un elemento nel diagramma di classe che ha una relazione con la classe eliminata.

Clicca il _uml_icon_delete_deep.png icona di comando.

Il BaseClass la classe viene eliminata solo nel diagramma di classe. L'oggetto viene rimosso e non esiste più.

  1. Clicca il _uml_icon_composition.png icona di comando.

  2. Fare clic su un'area vuota nel diagramma.

    Il Aggiungi POU si apre la finestra di dialogo.

  3. Specificare un nome per il nuovo oggetto.

    NewClass

  4. Clicca il Aggiungere pulsante per terminare la finestra di dialogo.

Il NewClass viene generato il blocco funzione e lì viene istanziata un'istanza della prima classe.

Una freccia di composizione punta dal nuovo NewClass classe al primo BaseClass classe.

La classe è stata estesa dalla dichiarazione di un'istanza di blocco funzione della prima classe.

FUNCTION_BLOCK NewClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    InstanceBase : BaseClass;
END_VAR
  1. Clicca il _uml_icon_composition.png icona di comando.

  2. Fare clic su una seconda classe.

Una freccia di composizione punta dalla seconda classe alla prima classe.

La seconda classe è stata estesa dalla dichiarazione di un'istanza di blocco funzione della prima classe.

FUNCTION_BLOCK SecondClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    InstanceBase : BaseClass;
END_VAR
  1. Clicca il _uml_icon_association.png icona di comando.

  2. Fare clic su un'area vuota nel diagramma.

    Il Aggiungi POU si apre la finestra di dialogo.

  3. Specificare un nome per il nuovo oggetto.

    NewClass

  4. Clicca il Aggiungere pulsante per terminare la finestra di dialogo.

Il nuovo NewClass viene generata la classe e lì viene dichiarato un puntatore della prima classe.

Una freccia di associazione punta dalla nuova classe alla prima classe. Il primo BaseClass la classe riconosce il nuovo NewClass classe.

Il NewClass class è stata estesa dalla dichiarazione di un puntatore alla BaseClass classe.

FUNCTION_BLOCK NewClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptrBase : POINTER TO BaseClass;
END_VAR
  1. Clicca il _uml_icon_association.png icona di comando.

  2. Fare clic sulla seconda classe esistente.

Una freccia di associazione punta dalla prima classe alla seconda classe. La prima classe riconosce la seconda classe.

La prima classe è stata estesa dalla dichiarazione di un puntatore alla seconda classe.

FUNCTION_BLOCK SecondClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptrBase : POINTER TO BaseClass;
END_VAR
  1. Clicca il _uml_icon_generalization.png icona di comando.

  2. Fare clic su un'area vuota nel diagramma.

    Il Aggiungi POU si apre la finestra di dialogo.

  3. Specificare un nome per il nuovo oggetto.

    NewClass

  4. Clicca il Aggiungere pulsante per terminare la finestra di dialogo.

Viene generata una nuova classe che eredita dalla prima classe.

Una generalizzazione punta dalla nuova classe alla prima classe. La nuova classe eredita dalla prima classe.

La dichiarazione della nuova classe è stata generata con EXTENDS come estensione della prima classe.

FUNCTION_BLOCK ClassNew EXTENDS BaseClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Clicca il _uml_icon_association.png icona di comando.

  2. Fare clic sulla seconda classe esistente.

Una generalizzazione punta dalla prima classe alla prima classe.

La dichiarazione della seconda classe è stata generata con l'estensione della prima classe.

FUNCTION_BLOCK SecondClass EXTENDS BaseClass

  1. Clicca il _uml_icon_realization.png icona di comando.

  2. Fare clic su un'area vuota nel diagramma.

    Il Aggiungi interfaccia si apre la finestra di dialogo.

  3. Specificare un nome per il nuovo oggetto.

    ITF_New

  4. Clicca il Aggiungere pulsante per terminare la finestra di dialogo.

Viene generata un'interfaccia che viene implementata dalla classe in uscita.

Una freccia di implementazione punta dalla classe al nuovo ITF_A interfaccia.

Ora la classe implementa la nuova interfaccia. La dichiarazione della classe è stata estesa con l'implementazione.

FUNCTION_BLOCK BaseClass IMPLEMENTS ITF_New
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Clicca il _uml_icon_association.png icona di comando.

  2. Fare clic su un'interfaccia esistente.

L'interfaccia è implementata dalla classe.

Una freccia di realizzazione punta dalla classe all'interfaccia.

La dichiarazione della classe è stata estesa con l'implementazione dell'interfaccia.

FUNCTION_BLOCK BaseClass IMPLEMENTS ITF_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Fare clic sul nome della classe.

    Il nome è evidenziato in blu dopo il primo clic.

  2. Fare clic una seconda volta.

    Dopo aver fatto clic per la seconda volta, si apre un campo di immissione per modificare il nome.

  3. Cambia il nome della classe.

Il nome dell'oggetto (nella struttura del dispositivo o nel file POU view) è stato automaticamente adattato nella dichiarazione.

  1. Fare clic sul nome di un attributo o sul nome di un'operazione.

    Il nome è evidenziato in blu dopo il primo clic.

  2. Fare clic una seconda volta.

    Dopo aver fatto clic per la seconda volta, si apre un campo di immissione per modificare il nome.

  3. Cambia il nome.

La modifica viene applicata al progetto in modo sincrono e automatico.

Fare doppio clic sull'elemento della classe.

Si apre l'editor di oggetti corrispondente.

Esempi

Esempio 6. Composizione: Fb_D contiene Fb_A
_uml_img_example_composition.png
FUNCTION_BLOCK Fb_D
VAR
    VarFb_A: Fb_A;
    ...
END_VAR


Esempio 7. Associazione: Fb_A riconosce Class_2
_uml_img_example_assoziation_class_simple.png
FUNCTION_BLOCK Fb_A
VAR
    Class_2 : POINTER TO Class_2;
END_VAR


Esempio 8. Generalizzazione: Fb_A eredita da Fb_Base
_uml_img_example_generalization_function_block.png
FUNCTION_BLOCK Fb_A EXTENDS Fb_Base


Esempio 9. Implementazione: Class_A implementa Itf_A
_uml_img_example_realization.png
FUNCTION_BLOCK Class_A IMPLEMENTS Itf_A