Il linguaggio C# Struct e Classi
|
|
|
- Agnella Carrara
- 9 anni fa
- Просмотров:
Транскрипт
1 Tecniche di Programmazione avanzata Corso di Laurea Specialistica in Ingegneria Telematica Università Kore Enna A.A Alessandro Longheu Il linguaggio C# Struct e Classi
2 Strutture In Java, non esistono strutture dati diverse dalle classi, invece in C#, come in C, esistono anche le struct. Un tipo struct è un tipo di valore generalmente utilizzato per incapsulare piccoli gruppi di variabili correlate, ad esempio le coordinate di un rettangolo o le caratteristiche di una voce di inventario. Si tratta quindi di un tipo di dato ideale per piccoli oggetti, anche se talvolta uno stesso concetto potrebbe essere implementato come struttura o classe senza rilevanti differenze fra le due possibilità 2
3 Esempio Struct public struct Point { int x, y; public Point(int x, int y) { Point this.x = x; p = new Point(2,5); p.x this.y = y; p.x += += 100; int int px px = p.x; // // px px = public int X { get { return x; set { x = value; public int Y { get { return y; set { y = value; 3
4 Esempio Struct Dichiarazione struct Point { public int x, y; // fields public Point (int x, int y) { this.x = x; this.y = y; // costruttore public void MoveTo (int a, int b) { x = a; y = b; // metodi Uso Point p; // non inizializzato Point p = new Point(3, 4); // il costruttore alloca la struct p.x = 1; p.y = 2; // accesso ai campi p.moveto(10, 20); // invocazione del metodo Point q = p; // assegnazione di un valore 4
5 Strutture Le strutture sono tipi di valori. Quando un oggetto viene creato da una struttura e assegnato a una variabile, la variabile contiene l'intero valore della struttura. Quando si copia una variabile che contiene una struttura, vengono copiati tutti i dati, pertanto le eventuali modifiche apportate alla nuova copia non vengono applicate ai dati contenuti nella copia precedente. Poiché le strutture non utilizzano riferimenti, non possiedono un'identità. Non è quindi possibile distinguere tra due istanze di un tipo di valore con gli stessi dati. In C# tutti i tipi di valore derivano implicitamente da ValueType, che eredita da Object. 5
6 Strutture struct SPoint { int x, y;... class CPoint { int x, y;... sp SPoint sp = new SPoint(10, 20); CPoint cp = new CPoint(10, 20); cp 10 Cpoint 20 Le struct occupano meno memoria rispetto ad una classe analoga, perché non prevedono un puntatore+struttura ma solo struttura sono quindi da preferire rispetto ad una classe se servono in grande quantità 6
7 Strutture Il compilatore crea ed elimina automaticamente in modo permanente copie delle strutture, pertanto non è necessario disporre di costruttori e distruttori predefiniti, inutilità che ha spinto i progettisti del linguaggio a VIETARE per le strutture costruttori di default (senza parametri) e distruttori. Il compilatore implementa infatti il costruttore predefinito assegnando tutti i campi dei valori predefiniti (inizializza tutto a 0 e i riferimenti a null). Le strutture sono tipi valori, quindi sono tutte allocate nello stack o nello stesso spazio di indirizzamento di un altro oggetto (se incapsulate al suo interno) le variabili struct possono essere create con o senza new : nel primo caso viene chiamato il costruttore indicato dopo new, nel secondo invece i campi restano non assegnati e per poter utilizzare l'oggetto è necessario inizializzarli tutti (accedendovi singolarmente tramite notazione puntata) 7
8 Classi e Strutture: similitudini Ambedue sono tipi definiti dall utente (user-defined types) Ambedue possono implementare interfacce multiple Ambedue possono contenere Dati Fields, constants, events, arrays Funzioni Methods, properties, indexers, operators, constructors (con parametri) Definizioni di tipi Classes, structs, enums, interfaces, delegates 8
9 Confronto fra Classi e Strutture Classes Structs Riferimenti (allocati nell heap) Permesso il valore NULL Possono essere derivati (tutte le classi ereditano da object) Possono implementare interfacce possono avere un costruttore senza parametri Nei costruttori, i campi possono essere inizializzati tutti o in parte Possono avere un distruttore Valori (allocati nello stack) NULL NON permesso Non ammettono derivazioni, quindi non è ammesso protected (sono compatibili con object) Possono implementare interfacce il costruttore senza parametri è solo di default (no overriding) Nei costruttori, TUTTI i campi devono essere inizializzati NON possono avere un distruttore 9
10 Esempio Struct public struct MyStruct { string str; public string Member{ get{ return str; set{ str=value; public class MyClass { string str; public string Member{ get{ return str; set{ str=value; 10
11 Esempio Struct using System; class MainClass { static void Main( ) { Console.WriteLine( "Struct \n" ); MyStruct var1=new MyStruct(); var1.member="initialized"; // value of var1 is assigned to var2 MyStruct var2=var1; //var1.str & var2.str are different memory locations in the stack. Console.WriteLine(var1.Member+"\n"+var2.Member); var1.member="assigned"; Console.WriteLine( var1.member+"\n"+var2.member ); Console.WriteLine( "\nclass\n" ); MyClass obj1=new MyClass( ); obj1.member="initialized"; // reference(or simply address)of an object stored in obj1 is assigned to obj2. MyClass obj2=obj1; //obj1 & obj2 are 2 reference variables in the stack.they points to a // single object in the heap.so obj1.str & obj2.str are same memory location. Console.WriteLine( obj1.member+"\n"+obj2.member ); obj1.member="assigned"; Console.WriteLine( obj1.member+"\n"+obj2.member ); 11
12 Esempio Struct OUTPUT Struct Initialized Initailized Assigned Initailized Class Initialized Initailized Assigned Assigned 12
13 C# Structs vs. C++ Structs C++ User-defined value type Può essere allocato nell heap, o nella stack o come un membro (value o reference) Membri sono sempre public C# User-defined type value Sempre allocati nello stack o come un membro I membri della struct possono essere public, internal or private 13
14 Tipo Class Le classi sono simili a quelle Java e C++ : Una classe combina uno stato (fields) e un comportamento (metodi e proprieta) Le istanze di una classe sono allocate nell heap La creazione delle istanze (oggetti) di una classe è affidata ai costruttori Il Garbage collector localizza gli oggetti nonreferenziati e invoca i metodi finalization su di essi Il controllo degli accessi ai membri della classe è controllata dall execution engine Con l eccezione dei metodi virtuali gli elementi delle classi possono essere utilizzati nelle structs! 14
15 Fields (attributi) Lo stato degli oggetti è tenuto nei campi Ogni campo ha un tipo Esempio: public class BufferedLog { private string[] buffer; private int size; // I campi sono accessibili attraverso la notazione puntata (object.field) 15
16 Costanti Le classi e le strutture possono dichiarare delle costanti come membri. Le costanti sono valori noti in fase di compilazione che non subiscono modifiche. Per creare un valore costante inizializzato in fase di esecuzione, utilizzare la parola chiave readonly. Le costanti vengono dichiarate come campo, utilizzando la parola chiave const prima del tipo del campo, e devono essere inizializzate al momento stesso della dichiarazione. La parola chiave readonly è diversa dalla parola chiave const. Un campo const può essere inizializzato solo nella dichiarazione del campo, Un campo readonly può essere inizializzato nella dichiarazione o in un costruttore. I campi readonly possono quindi presentare valori diversi a seconda del costruttore utilizzato. 16
17 Costanti class C { int value = 0; inizializzazione opzionale const long size = ((long)int.maxvalue + 1) / 4; devono essere inizializzati l inizializzazione deve essere valutabile durante la compilazione readonly DateTime date; inizializzati nella dichiarazione o nel costruttore class Age { readonly int _year; Age(int year) { _year = year; void ChangeYear() { _year = 1967; // Will not compile. 17
18 Static Valori riferiti alla classe, non all oggetto class Rectangle { static Color defaultcolor; // static readonly int scale; // int x, y, width,height; //... Le Costanti non possono essere definite static 18
19 Metodi I metodi C# sono simili a quelli java anche se C# offre un insieme di opzioni utili per il programmatore C# consente di controllare la chiamata di un metodo utilizzando la keyword virtual Il passaggio dei parametri puo essere gestito utilizzando le keywords out/ref/params L invocazione dei metodi remoti può essere migliorata utilizzando tali specificatori 19
20 Metodi Esempio di metodo class C { int sum = 0, n = 0; public void Add (int x) { sum = sum + x; n++; // procedure public float Mean() { // function (must return a value) return (float)sum / n; 20
21 Metodi statici Metodo statico: operazioni su membri costanti class Rectangle { static Color defaultcolor; public static void ResetColor() { defaultcolor = Color.white; 21
22 Esempio Classe Dichiarazione class Rectangle { Point origin; public int width, height; public Rectangle() { origin = new Point(0,0); width = height = 0; public Rectangle (Point p, int w, int h) { origin = p; width = w; height = h; public void MoveTo (Point p) { origin = p; Uso Rectangle r = new Rectangle(new Point(10, 20), 5, 5); int area = r.width * r.height; r.moveto(new Point(3, 3)); Rectangle r1 = r ; // assegnato il riferimento 22
23 Parametri nei metodi I parametri dei metodi possono essere etichettati per controllare la semantca del passaggio dei parametri Per default la semantica è la stessa di Java I modificatori utilizzati sono out ref params 23
24 Parametri nei metodi L'alternativa di C# per i tipi primitivi: ref e out ref forza il passaggio per riferimento per un tipo primitivo che abbia già un valore una procedura per scambiare i valori di due variabili una procedura che deve alterare un parametro fornito out forza il passaggio per riferimento per un tipo primitivo che non abbia già un valore una procedura per calcolare un risultato una funzione che deve calcolare e restituire più di un valore le parole chiave ref e out appaiono: sia dal lato del server (definizione del metodo) sia dal lato del cliente, in fase di chiamata del metodo 24
25 Parametri nei metodi Java Sono ammesse funzioni con un numero variabile di parametri I parametri di tipi oggetto sono riferimenti: la copia per valore del riferimento implica il passaggio per riferimento dell'istanza I parametri di tipi primitivi passano per valore (sono copiati) C# Sono ammesse funzioni con un numero variabile di parametri I parametri di tipi oggetto sono riferimenti: la copia per valore del riferimento implica il passaggio per riferimento dell'istanza I parametri di tipi primitivi passano per valore se non diversamente specificato tramite ref e out 25
26 Parametri nei metodi public static void Main(){ int j = new int(); // 0 Console.WriteLine("i=" + i + ", j=" + j); scambia(ref i, ref j); Console.WriteLine("i=" + i + ", j=" + j); public static void scambia(ref int x, ref int y){ int t=x; x=y; y=t; NOTARE: la la parola chiave ref ref deve comparire anche all'atto della della chiamata (o (o la la funzione non non viene viene trovata) ovviamente devono essere variabili, non non espressioni che che denotano valori valori 26
27 Parametri nei metodi class Esempio7 { public static void Main(){ int i=8, m, M; minmax(i, 4, out m, out M); Console.WriteLine("m=" + m + ", M=" + M); public static void minmax(int x, int y,out int min, out int max){ min = (x<y)? x : y; max = (x>y)? x : y; tipi tipi primitivi passati passati per per riferimento al al fine fine di di attribuire attribuire loro loro un un valore valore perché perché erano eranoindefiniti (un (un altro altro aspetto aspetto del del var) var) NOTARE: la la parola parola chiave chiave out out deve deve comparire anche anche all'atto all'atto della della chiamata (o (o la la funzione funzione non non viene viene trovata) trovata) anche anche qui qui ovviamente devono devono essere essere variabili, non non valori valori 27
28 Parametri nei metodi class Esempio6 { public static void Main(){ int i; // ERRORE!! int j = new int(); // 0 Console.WriteLine("i=" + i + ", j=" + j); scambia(ref i, ref j); Console.WriteLine("i=" + i + ", j=" + j); class Esempio7 { public static void Main(){ I nt i=8, m, M=9; // OK minmax(i, 4, out m, out M); Console.WriteLine("m=" + m + ", M=" + M); Se una variabile out è inizializzata non succede niente (ma il suo valore va perso) Se una variabile ref non è inizializzata si ha ERRORE DI COMPILAZIONE 28
29 Parametri nei metodi C# ammette funzioni (e metodi) con un numero variabile di parametri Una tale funzione è definita avendo come parametro formale un array, qualificato dal modificatore params All'atto della chiamata, i parametri attuali (distinti!) si rimappano sulle celle dell'array Foo(out v, ref h, 1, 2, 3); -> Foo(out v, ref h, new int[]{1,2,3); Se una funzione prevede sia parametri standard, sia una serie variabile di parametri params, questa dev'essere (ovviamente!) l'ultima della lista. 29
30 Parametri nei metodi class Esempio8 { public static void Main(){ Console.WriteLine( min(3,4,-5,12) ); Console.WriteLine( min(3,-18) ); 4 parametri attuali attuali 2 parametri attuali attuali public static int min(params int[] valori){ if (valore.length==0) // errore!! else // codice per calcolare il minimo si si rimappano sull'array... public void showall(string msg, params int[] w){ eventuali parametri normali sono sono prima prima 30
31 C# vs Java: Classi e Istanze Java 1. Ogni classe pubblica deve stare in un file omonimo.java 2. I costruttori hanno lo stesso nome della classe; le variabili non inizializzate sono poste a zero (o null) 3. La distruzione è gestita dal garbage collector: il metodo finalize specifica le eventuali azioni finali 4. Per default, i membri delle classihanno visibilità package 5. Le istanze si creano con l'operatore new e sono puntate da riferimenti C# Più classi pubbliche possono stare in un file (di nome qualsiasi) I costruttori hanno lo stesso nome della classe; le variabili non inizializzate sono poste a zero (o null) La distruzione è gestita dal garbage collector: il finalizer è il distruttore (~nomeclasse) Per default, i membri delle classi hanno visibilità privata Le istanze si creano con l'operatore new e sono puntate da riferimenti 31
32 C# vs Java: Classi e Istanze Java 6. this denota l'istanza corrente 7. Se non è definito nessun costruttore, il sistema aggiunge un costruttore senza parametri (default) 8. Se però si definisce anche solo un costruttore, il sistema non genera più alcun costruttore di default 9. Non è lecito usare l'operatore new sui tipi primitivi (non ha significato) 10. No ereditarietà multipla C# 6. this denota l'istanza corrente 7. Se non è definito nessun costruttore, il sistema aggiunge un costruttore senza parametri (default) 8. Se però si definisce anche solo un costruttore, il sistema non genera più alcun costruttore di default 9. È lecito usare l'operatore new sui tipi primitivi. Un costruttore di default li inizializza a zero 10. No ereditarietà multipla 32
33 Static vs. Instance Members Per default, i membri di una classe sono riferiti ad una istanza (oggetto) Ogni istanza ha i suoi propri campi I metodi sono appicati alla specifica istanza I membri statici fanno riferimento al tipo (membri di classe) I metodi Static non possono accedere all istanza No variabili this nei metodi static Non bisogna abusare di membri static!!! Essi sono in sostanza variabili globali object-oriented e funzioni globali 33
34 Modificatori di accesso I modificatori di accesso specificano chi può usare un tipo o un suo membro I modificatori di accesso controllano l encapsulation I tipi di alto livello (quelli presenti direttamente nel namespace) possono essere public o internal I membri di una classe possono essere public, private, protected, internal, or protected internal 34
35 Modificatori di accesso Modificatore public private protected internal protected internal Se Se definito in in un un tipo tipo T in in un un assembly A Da Da chiunque Solo Solo all interno di di T (default) T e i i tipi tipi derivati da da T Per Per tutti tutti i i membri di di A Per Per T e i i tipi tipi derivati da da T o all interno di di A 35
36 Costruttori in C# class Esempio3 { static void Main(){ int i; // non inizializzata valore casuale int k = new int(); // costruttore di default 0 System.Console.WriteLine(i); System.Console.WriteLine(j); OK perché j è inizializzata sintassi non ammessa in Java: i tipi primitivi in Java non hanno alcun costruttore di default ERRORE di compilazione per i non è inizializzato 36
37 Costruttori Multipli Java Un costruttore può invocarne altri della stessa classe con la sintassi speciale this( parametri ) come prima istruzione dentro alcostruttore class class Counter {{ int int val; val; public public Counter(int v){ v){ val=v; public public Counter(){ this(3); C# Un costruttore può invocarne altri della stessa classe con la sintassi speciale this( parametri ) come direttiva esterna al costruttore preceduta da : class class Counter {{ int int val; val; public public Counter(int v){ v){ val=v; public public Counter() :: this(3) { 37 {
Programmazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this [email protected] http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
Programmazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
Corso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 15 Alberto Ceselli [email protected] Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 05 Maggio 2009 Programming in the
Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
Corso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti Costruttori di copia, funzioni di accesso e variabili static aa 2008/2009 Claudio De Stefano Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 1
Programmazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi [email protected] Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
Definizione di classi. Walter Didimo
Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti
Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà
L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe
Programmazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
Introduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo
Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il
Linguaggi di Programmazione I Lezione 10
Linguaggi di Programmazione I Lezione 10 Prof. Marcello Sette mailto://[email protected] http://sette.dnsalias.org 8 maggio 2008 Array 3 Dichiarazione...........................................................
Esempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Il linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
Il linguaggio C++ Ugo de Liguoro
Il linguaggio C++ Ugo de Liguoro Caratteristiche Il C++ è class based; interpreta le classi come tipi; il subtyping coincide con la (chiusura transitiva della) relazione di sottoclasse; è basato sul C
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA
Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:
Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata
Laboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo [email protected] 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C
Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
Gestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - [email protected] A pessimistic programmer sees the array as half empty.
PROGRAMMAZIONE 2 5. Dynamic dispatch
PROGRAMMAZIONE 2 5. Dynamic dispatch PR2 2017-2018 1 Cosa significa? La dichiarazione di una variabile non determina in maniera univoca il >po dell oggeao che la variabile riferisce Cerchiamo di capire
Il paradigma OO e le Classi
Oggetti e Classi (CAP 10) Alberto Garfagnini Università degli studi di Padova 1 Dicembre 2009 Il paradigma OO e le Classi La programmazione ad Oggetti () è una filosofia di programmazione che si basa sui
Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
