• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Programmazione ad oggetti
 

Programmazione ad oggetti

on

  • 2,753 views

 

Statistics

Views

Total Views
2,753
Views on SlideShare
2,752
Embed Views
1

Actions

Likes
1
Downloads
113
Comments
1

1 Embed 1

http://efesto.cloudapp.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Programmazione ad oggetti Programmazione ad oggetti Presentation Transcript

    • La Programmazione Orientata agli Oggetti (O.O.P.) Object-Oriented Programming
    • Programmazione imperativa algoritmo si basa sul concetto di : Sappiamo che la Insieme di istruzioni che a partire dai dati di input permettono di ottenere dei risultati in output
    • Come si programma : Applicando i principi della programmazione strutturata :
        • metodologia di analisi Top-Down
      • Strutture di controllo
          • sequenza
          • selezione
          • iterazione
    • La Programmazione si fonda invece sul concetto di : orientata agli oggetti in cui ogni componente è caratterizzato da proprietà ( attributi ) e azioni ( metodi ) sistema è un’ insieme di entità interagenti ( oggetti ) sistema
    • Come si programma in O.O.P. ? … applicando i principi della programmazione strutturata
        • cioè ...
        • metodologia di analisi Top-Down
        • strutture di controllo
          • sequenza
          • selezione
          • iterazione
    • Quindi quello che cambia è solamente del problema... sequenza interazione la visione algoritmo sistema
      • Per cui è necessario individuare :
        • le entità (gli oggetti) presenti all’interno del sistema
        • le modalità di interazione reciproca
      Non a caso si parla di programmazione orientata agli oggetti
    • Programmi Algoritmi dati + Per la risoluzione di un Problema metodi attributi Oggetti + Per la gestione di un Sistema
    • Problema complesso scomposizione in procedure scomposizione in entità interagenti (oggetti) Sistema complesso ricapitolando... Programmazione imperativa orientata agli oggetti Programmazione
    • Classi di oggetti e Oggetti (secondo il formalismo UML)
    • Oggetto = istanza di una Classe automobile velocità colore livello carburante posizione marcia avvia accelera gira fermati cambia marcia rifornisci Classe Ford Focus 1.4 Velocità = 108 colore = nero livello carburante = 15,6 posizione marcia = 5 oggetto Fiat Punto 60 Velocità = 65 colore = verde livello carburante = 32,4 posizione marcia = 3 oggetto
    • Diagramma delle Classi caratteristiche specifiche comportamenti generali nome classe attributo1 attributo2 attributo3 attributo4 metodo1 metodo2 metodo3 metodo4 metodo5 metodo6 automobile velocità colore livello carburante posizione marcia avviati accelera sterza spegniti cambia marcia frena
    • Diagramma degli Oggetti cambiano le caratteristiche specifiche a seconda dell’oggetto istanziato ( i comportamenti non ci sono perché comuni a tutti gli oggetti appartenenti a quella classe ) Ford Focus 1.4 Velocità = 108 colore = nero livello carburante = 15,6 posizione marcia = 5 nome oggetto attributo 1 = val1 attributo 2 = val2 attributo 3 = val3 attributo 4 = val4 Ferrari GA 04 Velocità = 83 colore = rosso livello carburante = 85,1 posizione marcia = 2
    • Classi . Ereditarietà e Gerarchia di ereditarietà . Tipi di ereditarietà . Polimorfismo
    • Ereditarietà classe genitrice costruisco nuove classi partendo da quelle già esistenti automobile a gas velocità colore livello carburante posizione marcia tipo di gas avvia accelera sterza frena cambia marcia accendi luci scambia gas-benz. Nuova Classe automobile velocità colore livello carburante posizione marcia avvia accelera sterza frena cambia marcia accendi luci Classe
    • Gerarchia di ereditarietà Mezzi di trasporto Veicoli a motore Mezzi non a motore Auto a gas Barca Auto Moto Cavallo Bici
    • Gerarchia di ereditarietà Mezzi di trasporto Veicoli a motore Auto a gas Barca Auto Moto Classe Sopraclasse (o Superclasse) Sottoclasse
    • Tipi di ereditarietà Eredità singola Eredità multipla Mezzi non a motore Cavallo Bici Animali Mezzi non a motore Cavallo
    • Esempio di ereditarietà Mezzi di trasporto velocità numero persone senza patente Veicoli a motore consumo accendi spegni accelera frena Moto cupolino numero ruote piega accelera impenna
    • Ereditarietà Classe Sottoclasse La Sottoclasse si differenzia: per Estensione quando la sottoclasse aggiunge nuovi attributi e metodi 1 . per Ridefinizione quando la sottoclasse ridefinisce i metodi riscrivendone il codice ereditato ( overriding del metodo ) 2 .
    • Polimorfismo . 1° Indica la possibilità per i metodi di assumere forme diverse (cioè implementazioni diverse) all’interno della gerarchia delle classi Veicoli a motore Auto Moto accelera accelera accelera  implementazione
    • Polimorfismo . 2° Classe Auto Frena (mano, 3) Frena ( ) Frena (motore) ( overloading dei metodi ) Indica la possibilità per i metodi di assumere forme diverse (cioè implementazioni diverse) all’interno della stessa classe  parametri = nome
    • Oggetti . Attributi e Metodi . Incapsulamento . Struttura degli oggetti . Interazione tra oggetti . L’interfaccia verso l’esterno
    • metodi attributi Oggetti + attributo 1 attributo2 attributo3 attributo4 metodo 1 metodo2 metodo3 metodo4 metodo5 metodo6 Costituiscono la memoria dell’oggetto e consentono di tenere traccia dello stato dell’oggetto Sono le operazioni che un oggetto è in grado di compiere ( comportamenti ) Attraverso i metodi un oggetto può accedere alla sua memoria e modificare il suo stato
    • Oggetti attributi Descrivono le proprietà statiche dell’oggetto Nella programmazione gli attributi vengono realizzati attraverso l’uso delle variabili utilizzate dall’oggetto per memorizzare i dati metodi attributi +
    • metodi attributi Oggetti + metodi Descrivono le proprietà dinamiche dell’oggetto Nella programmazione i metodi vengono realizzati attraverso la scrittura di codice ( procedure e funzioni ) che implementano le operazioni dell’oggetto
    • Incapsulamento Viene visto come una scatola nera ( o blackbox ) permettendo così il mascheramento dell’informazione ( information hiding ) La proprietà dell’oggetto di incorporare al suo interno attributi e metodi viene detta incapsulamento metodi attributi metodi attributi Sezione Pubblica Sezione Privata L’oggetto è quindi un contenitore sia di strutture dati e sia di procedure che li utilizzano
    • Sezione Pubblica attributi e metodi che si vogliono rendere visibili all’esterno ( e quindi utilizzabili dagli altri oggetti ) Struttura degli oggetti Sezione Privata attributi e metodi che non sono accessibili ad altri oggetti ( e quindi si rendono invisibili all’esterno ) pubblica privata
    • L’interfaccia verso l’esterno Un oggetto può essere utilizzato inviando ad esso dei messaggi Ambiente esterno L’interfaccia non consente di vedere come sono implementati i metodi, ma ne permette il loro utilizzo e l’accesso agli attributi pubblici L’insieme dei messaggi rappresenta l’interfaccia di quell’oggetto Sezione Pubblica avvia( ) accelera( ) sterza( ) frena( ) liv.carburante velocità Sezione Privata ?
    • Interazione fra gli oggetti Un programma ad oggetti è caratterizzato dalla presenza di tanti oggetti che interagiscono fra loro attraverso il meccanismo dello scambio di messaggi Metodi: accelera( ) sterza( ) frena( ) Messaggi: FerrariGA2004 .accelera( ) FerrariGA2004 .frena( ) Ferrari GA 04 Velocità = 83 colore = rosso liv.carburante = 85,1 posizione marcia = 2 Schumacher Data Nascita = 3/1/69 nazione = germania peso = 74 altezza = 174
    • metodi Quando un oggetto invoca un metodo di un altro oggetto ? Interazione fra gli oggetti
      • quando vuole avere un’informazione sul secondo oggetto
      • quando vuole modificare lo stato del secondo oggetto
      ( in sostanza conoscere o modificare il valore dei suoi attributi )
    • Es. di scambio di messaggi Metodo : accelera( ) FerrariGA04 . accelera( ) Serbatoio . diminuisci( ) Attributi : velocità = 92 giri motore= 9300 Metodo : diminuisci( ) FerrariGA04 . liv.carburante = 85,1 Attributo : quantità = 85,1 Attributo : liv.carburante = 85,1 Ferrari GA 04 Velocità = 83 colore = rosso liv.carburante = 85,3 posizione marcia = 2 giri motore = 8700 Schumacher Data Nascita = 3/1/69 nazione = germania peso = 74 altezza = 174 Serbatoio quantità = 85,3 tipo benz. = superF1 riserva = 15 peso = 77,3 A B C A B C
    • Nuova Metodologia Per costruire un programma orientato agli oggetti occorre: . Stabilire come gli oggetti interagiscono fra loro . . Definire le classi , indicando gli attributi e i metodi . Identificare gli oggetti che caratterizzano il modello del problema
    • orientati agli oggetti Linguaggi di programmazione
    • Linguaggi Puri ogni cosa è un oggetto ( ...anche un numero intero è definito come oggetto ) . Smalltalk . Eiffel Linguaggi ibridi alcuni tipi di dati non sono oggetti ( maggiore libertà a scapito di una maggiore chiarezza ) . C++ . Java . Visual Basic . Delphi
    • # include <iostream.h> class Base { friend void funzione {Base&}; public : int pubblico; void Pubblico() {cout <<‘Pubblico: ‘<<pubblico<<end1;}; private : int privato; void Privato() {cout <<‘Pubblico: ‘<<pubblico<<end1;}; protected : int protetto; void Protetto() {cout <<‘Protetto: ‘<<protetto<<end1;}; }; void funzione{Base &istanza} { istanza.pubblico =1; istanza.privato =2; istanza.protetto=3; istanza.Pubblico(); istanza.Privato(); istanza.Protetto(); } void main() { Base istanzabase; istanzabase.pubblico =10; funzione(istanzabase); } C++
    • import java.applet.*; import java.awt.*; public class semplice extends Applet { private TextArea ta; private Label l; public void init() { ta = new TextArea(10,8); l = new Label(“numeri casuali”, Label.CENTER); l.setBackground(Color.Yellow); setLayout(new BorderLayout()); add(l, “center”); add(ta “east”); generaNumeri(); } Public void generaNumeri() { int casuale; for ( int i=1; i<=10; i++) { casuale = (int (Math.random()*1000); ta.append(“-> ”+casuale+”n”); } } } Java
    • Private Sub Command1_Click() N = Val(InputBox(“Numero di cui vuoi la radice quadrata :”,”Radice Quadrata”)) Msg = “La radice quadrata di “& N SqrN = RadiceQ(N) Select Case SqrN Case 0 Msg = Msg & “è zero.” Case –1 Msg = Msg & “è un numero immaginario.” Case Else Msg = Msg & “è” & SqrN End Select MsgBox Msg End Sub Visual Basic
    • unit somma; Interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class (TForm) Button1 : TButton; Edit1 : TEdit; Edit2 : TEdit; Edit3 : TEdit; Button2 : TButton; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private public end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin Close; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit3.text := IntToStr(StrToInt(Edit1.text) + StrToInt(Edit2.text)); end; end. Delphi