Quando scriviamo del codice in HTML, andiamo a formattare i testi con i fogli di stile (CSS). Questi, possono essere richiamati in 3 modi:
in linea, quando applichiamo il riferimento ad un elemento;
interni, quando definisco uno stile e lo richiamo per una parte della pagina;
esterno, foglio di stile salvato in un'altra parte (qualcosa di esterno che viene richiamato e caricato).
Nella programmazione procedurale siamo obbligati a costruire una sequenza di istruzioni che permette di tradurre un algoritmo in un codice. Esistono poi vari livelli di complessità (fino ad arrivare alla programmazione ad oggetti). Molto velocemente gli step sono:
step 1 - comando uno dopo l'altro;
step 2 - costrutti iterativi (precursori delle funzioni, si tratta infatti di parte di codice isolato e ripetute);
step 3 - funzioni (parti di codice isolato usato solo all'occorrenza;
step 4 - utilizzo librerie o moduli (mediante chiamata vengono caricate in memoria dei "pacchetti" di informazioni e istruzioni utilizzabili all'interno del codice);
step 5 - ambiti di visibilità (variabili globali e locali);
step 6 - il grande salto - la programmazione ad oggetti si usano molto le classi.
Per proseguire dobbiamo introdurre il concetto di classe.
Le classi sono entità nuove che possiamo definire come una parte di struttura di dati collegati a delle funzioni. La classe non è definita solo da una serie di dati ma anche dalla serie di funzioni a essi connessi.
Lavorando con le classi si prende un concetto necessario per il raggiungimento di uno scopo e ci lavora. Quando ci troviamo a lavorare con la programmazione procedurale dividiamo il problema in piccoli problemi e uniamo le soluzioni, qua il contrario: concettualizziamo.
Una classe viene istanziata (cioè, viene fatta un istanza) dove un oggetto reale con valori propri è anche in grado di applicare dei metodi per ottenere delle risposte.
Se dico “mezzo di trasporto=elicottero" specifico la classe, se ho la classe parallelogrammi posso specificare, rombi quadrati rettangoli ecc.
Se invece lavoro al contrario posso generalizzare parallelogrammi in quadrilateri e così via.
Un metodo svolge una funzione strettamente collegata al tipo di dato, vediamo un esempio con una caffettiera.
caffettiera.caffe e caffettiera.versa sono due metodi
ovviamente non applicherò mai a caffettiera il metodo .lancia o .fattiilbagno.
Ragioniamo ora sulla classe MEZZO DI TRASPORTO.
classe: mezzo di trasporto
Può verificarsi una situazione in cui una classe possiede delle sottoclassi (quando abbiamo la classe quadrilatero, la sua sottoclasse è parallelogramma ad esempio). La classe parallelogramma eredita tutte le caratteristiche dei quadrilateri, ma non succede il contrario.
Quella situazione in cui fornendo in ingresso al mio oggetto tipi di dati diversi l'oggetto riesce a lavorarci comunque.
Esempio: molte funzioni usate in PY funzionano su liste e stringhe (sono diverse ma entrambe indicizzabili).