ACADEMIA DE STUDII ECONOMICE

Maat: px
Weergave met pagina beginnen:

Download "ACADEMIA DE STUDII ECONOMICE"

Transcriptie

1 ATENTIE! Scopul acestui document este de a structura si de a prezenta pe scurt notiunile discutate la curs. Invatarea materiei, exclusiv pe baza acestui material, reprezinta o abordare superficiala.

2 ACADEMIA DE STUDII ECONOMICE Facultatea de Cibernetică, Statistică şi Informatică Economică Lect. dr. Cătălin BOJA cladire CSIE, sala 2315 SUPORT CURS

3 Activitate didactica: Curs 50% + Laborator 50% 11 activitati 11 activitati Metodologia de evaluare: Examen la calculator curs (50%) Lucrare la calculator seminar Martie 2010 (25%) Evaluare proiect in 2 faze (10%) 3 grile curs (15%) Obiectiv: Insusirea aspectelor practice si teoretice ale limbajului C# si a tehnologiei.net Forms 3

4 1. Introducere.NET Framework 2. Fundamentele limbajului C# 3. Programare OO in C# 4. Reflection 5. Multi-threading 6. Streams 7. Sockets 8. Remoting 9. Programare DB ADO.NET 10. GUI Graphical User Interface 11. Web Programing & XML 12. Interop & Enterprise Service 1. Concepte Programare Orientata Obiect. Comparatie C++ vs C# 2. Clase, obiecte si namespace 3. Compozitie/Derivare/Interfete 4. Observer/Delegate & Windows Forms 5. Win Forms, Controale de baza, Gestiune eveneimente Mouse + Tastatura 6. Meniuri, Controale de tip bara, Validare Controale, Fisiere 7. Controale complexe, ListView, TreeView 8. Lucru cu ferestre multiple, Aplicatii de tip MDI, Elemente de grafica 9. Imprimare, Drag&Drop. Clipboard 10. ADO.NET, Controale Utilizator 4

5 1. Ion SMEUREANU, M. Dardala, A. Reveiu Visual C#.NET, Editura CISON, Bucuresti K.M. Hussain Programming.NET with C#, Rox Publishing House, USA Jesse Liberty Programming C# 2 nd Edition, O Reilly Publishing House, USA Tom Archer Inside C#, Microsoft Press, USA Adrian Turtschi C#.NET Web Developers Guide, Syngress Publishing House, USA ECMA TC39/TG2 C# Language Specification, USA

6 Platforma.NET Primul program C# Mixed Programming Comparatie C++ vs C# Tipuri de date in C# Conceptul de boxing / unboxing Masive de date Tipuri de date struct/enum si class Argumentele metodei main Mecanisme try-catch Pointeri/Referinte Definire clase Proprietati 6

7 VB.NET Managed C++ C# Alte limbaje C# CLS - Common Language Specifications Web Services / Web Forms Windows Forms Data si XML Base Class Library CLR - Common Language Runtime (debug, exception, type checking, JIT compiler, garbage collector) 7

8 Sursa C# / J# / Managed C++, VB.NET => Compilare csc.exe, vbc.exe, cl.exe IL Interpreted Language => Procedura de asamblare csc.exe, vbc.exe, cl.exe PE Portable Executable (EXE sau DLL) Assembly Interpretat de CLR 8

9 cshello.cs Nu sunt permise functii/variabile globale using System; class Hello { public static void Main(){ Console.WriteLine("Hello World.NET"); } } Metoda Main nu trebuie apelata de un obiect Start -> Visual Studio > Tools -> Command Prompt Compilare cu csc.exe cshello.cs 9

10 vbhello.vb Imports System Module Hello Sub Main() Console.WriteLine("Hello World.NET") End Sub End Module Start -> Visual Studio > Tools -> Command Prompt Compilare cu vbc.exe vbhello.vb 10

11 mcpphello.cpp #using <mscorlib.dll> using namespace System; void main() { Console::WriteLine(S"Hello World.NET"); } Start -> Visual Studio > Tools -> Command Prompt Compilare cu cl.exe mcpphello.cpp 11

12 jshello.js import System; Console.WriteLine("Hello World.NET"); Start -> Visual Studio > Tools -> Command Prompt Compilare cu jsc.exe jshello.js 12

13 ilhello.il.assembly Hello{ }.method public static void run() il managed{.entrypoint ldstr "Hello World.NET" call void [mscorlib]system.console::writeline(class System.String) ret } Start -> Visual Studio > Tools -> Command Prompt Compilare cu ilasm.exe ilhello.il 13

14 namespace Math{ } public class BasicOp{ } public static double Add(double op1, double op2){ return op1 + op2; } public static double Multiply(double op1, double op2){ return op1 * op2; } Imports Math Imports System Module MathTest Sub Main() C# csc /t:library math.cs math.dll VB vbc /r:math.dll mathtest.vb Dim vb1 As Double = 20 Dim vb2 As Double = 30 mathtest.exe Console.WriteLine("Suma celor 2 variabile este {0}, iar produsul este {1}.", BasicOp.Add(vb1, vb2), BasicOp.Multiply(vb1, vb2)) End Sub End Module 14

15 class Abonat{ }; void main(){ Abonat a1(2345, "Maria"); Abonat a2(231, "Ana"); a2 = a1; Abonat* pa1 = new Abonat(112, "Ion"); Abonat* pa2 = new Abonat(128, "Vasile"); pa1 = pa2; pa1->afisare(); pa2->afisare(); C++ if(a1 == a2) cout << "\n\t VALORI: egale"; if(pa1 == pa2) cout<< "\n\t POINTER: egale"; else cout<< "\n\t POINTER:! egale" } using System; public class Abonat{ public static void Main(){ XAbonat a1 = new Abonat(2345, "Maria"); Abonat a2 = new Abonat(231, "Ana"); a2 = a1; a1.afisare(); a2.afisare(); C# if (a1 == a2) Console.WriteLine("\t POINTER: egale"); else Console.WriteLine("\n POINTER:! egale"); } } 15

16 obiecte gestionate prin valoare si referinte; o clasa poate contine atribute dinamice gestionate de pointeri destructorul are rol de a dezaloca spatiul ocupat si pentru a evita memory leak-uri necesitate definire operator= si constructor copiere pentru a evita copierea implicita string gestionat prin char* obiecte gestionate doar prin referinte pointerii din C++ definiti cu * sunt considerati unsafe si sunt indicati doar pentru lucru cu COM-uri dezalocarea memorie se face de catre garbage collector-ul din CRL; destructorul are roluri speciale; operatorul = nu se mai supraincarca; operatorul = implicit realizeaza shallow copy; constructorul de copiere necesar pentru a face deep copy; un nou tip valoric string; 16

17 a. Tipuri de baza 1. Tipuri valorice b. Tipuri introduse de struct si enum 2. Tipuri referentiale introduse prin class / interface / delegate 17

18 Valori default in C#: numeric (int, long, double, ) -> 0 bool -> false char -> \0 enum -> 0 reference -> null 18

19 Trecerea din valoare in referinta si invers se face prin impachetare / despachetare (conceptul de boxing / unboxing) class BoxUnbox { static void Main() { int i = 123; object Obiect = i STIVA 4 octeti : 123 referinta HEAP 4 octeti: 123 Int32 I32 = i referinta? octeti: 123 } } int j = (int) Obiect; 4 octeti :

20 SINTAXA: tip_data [ ] nume_masiv; reprezinta colectii indexate de obiecte; diferit de masivul din C/C++ un obiect derivat din clasa Array mosteneste o serie de metode: BinarySearch() Clear() CopyTo() Sort( ) Clone( ) mosteneste o serie de proprietati: Length 20

21 int [ ] vect; vect = new int[4]; int [ ] vect2 = {1,2,3,4}; int [ ] vect3 = new int[4] {1,2,3,4}; STIVA referinta null referinta referinta referinta HEAP 16 octeti: 0,0,0,0 16 octeti: 1,2,3,4 16 octeti: 1,2,3,4 Pers p1; Pers [ ] vectpers; vectpers = new Pers[4]; vectpers = new Pers[4] {p1,p2,p3,p4}; referinta null referinta null referinta referinta 16 octeti: null, null, null, null Pers p1 Pers p1 Pers p1 Pers p1 21

22 SINTAXA: tip_data [, ] nume_masiv; int [,] matrice; matrice = new int[4,4]; int [2,2] matrice2 = {1,2,3,4}; //matrice tablou int [ ][ ] matrice3 = new int[3]; matrice3[0] = new int[3]; matrice3[1] = new int[5]; matrice3[2] = new int[7]; //matrice zig-zag 22

23 SINTAXA: [acces] struct nume_struct [:interfete] { atribute + metode } reprezinta colectii de atribute + metode; este derivata din object este un tip valoric (value type) definit de utilizator poate fi derivata din interfete poate fi impachetata intr-un obiect (boxing) 2. Tipuri de date struct/enum si class stud1.cs, stud2.cs 23

24 SINTAXA: enum nume_enum { lista constante } reprezinta o colectie de constante; implicit primul simbol are valoare 0 pot fi date valori explicite prin nume_simbol = valoare nu poate fi initializata cu valori numerice 2. Tipuri de date struct/enum si class stud1.cs, stud2.cs 24

25 SINTAXA: public static void Main(string[ ] Args) reprezinta un masiv de stringuri; prima valoare NU este numele executabilului trebuie validat numarul de parametrii hello1.exe Popescu Gigel <-> Args = { Popescu, Gigel } 1. Argumente main, try-catch, for, while hello1.cs, hello2.cs, hello4.cs, hello6.cs 25

26 Mecanisme try-catch-finally Pointeri/Referinte parametrii pentru funcţii Definire clase Proprietati Shallow copy vs Deep copy 26

27 exceptie situatie in care prelucrarea anumitor date de intrare nu este gestionata sau nu este posibila (ex: impartire la 0, citire in afara unui masiv) (ecuatie1.cs) permite gestiunea situatiilor exceptionale care conduc la terminarea imediata a programului necesar pentru a realiza programe robuste si fiabile implementat prin try, catch si throw permite gestiunea erorilor de sistem si a erorilor definite de programator 27

28 try {//secventa prelucrari} catch(exceptie_tip_1) { //secventa prelucrari specifice} catch(exceptie_tip_2) {//secventa prelucrari specifice} catch(exeption) { //secventa prelucrari generale} finally {//secventa prelucrari obligatorii} 28

29 blocul try{ } contine secventa de prelucrari care genereaza exceptii; are asociat minim un bloc catch intre blocul try si blocurile catch asociate nu exista alte instructiuni blocul catch( tip_exceptie exceptie) gestioneaza o exceptie de tipul anuntat tip_exceptie reprezinta instanta unei clase derivate din Exception (ArithmeticException, DivideByZeroException) 29

30 blocul catch(exception e) gestioneaza toate tipurile de exceptii blocul finally{ } contine secventa de prelucrari care se executa indiferent daca blocul try a generat sau nu exceptii si daca acestea au fost sau nu tratate in blocurile catch; 30

31 Blocurile catch sunt definite in ordine crescatoare a generalitatii exceptiilor tratate try { } catch(exceptie_tip_1){ } catch(exceptie_tip_2){ } catch(exception e){ } 31

32 Blocurile try-catch-finally pot fi incluse in alte blocuri try; Programatorul poate defini propriile exceptii prin clase derivate din Exception (ecuatie2.cs) functia throw genereaza orice tip de exceptie (ecuatie2.cs) 32

33 Exceptie definita de programator: public class ExceptieDiscriminant : Exception { public ExceptieDiscriminant(string Message) : base(message) { } } 33

34 subprogramale pot primi parametrii prin valoare sau prin referinta prin valoare -> copierea valorii parametrului pe stiva functiei prin referinta -> copierea adresei parametrului pe stiva functiei ATENTIE toate tipurile referentiale sunt trimise doar prin referinte 34

35 transferul parametrilor prin valoare (interschimb1.cs) public static void Interschimb(int p, int q){ int t = p; p = q; q = t; } 35

36 transferul parametrilor prin pointeri (*) - (interschimb2.cs) este considerat unsafe de catre compilator toate metodele care lucreaza cu pointeri * au atributul unsafe sursa se compileaza cu optiunea /unsafe public static unsafe void Interschimb(int* p, int* q){ int t = *p; *p = *q; *q = t; } 36

37 transferul parametrilor prin referinte (interschimb3.cs) referintele sunt definite prin ref parametrii de intrare/iesire out parametrii de iesire 37

38 transferul parametrilor prin referinte (interschimb3.cs) public static void Interschimb(ref int p, ref int q) { int t = p; p = q; q = t; } 38

39 subprogramele pot fi definite cu numar variabile de parametrii (suma.cs) public static double Suma(params double[] list) { double s = 0; if (list.length == 0) return s; for(int i = 0;i<list.Length;i++) { s += list[i]; } return s; } 39

40 Concepte legate de POO in C#: fiecare obiect contine date (atribute/campuri) definite in clasa; clasa defineste o serie de functii (metode/operatii) ce pot fi aplicate obiectelor; acestea definesc interfata obiectului; datele sunt ascunse in obiect si pot fi accesate numai prin functii definite in clasa incapsulare; obiectele sunt create prin instantierea clasei; prin abstractizare (definire clasa) se decide ce atribute si ce metode sunt suportate de obiecte; starea obiectului este definita de atributele sale; comportamentul obiectului este definit de metodele sale; termenul de passing a message catre un obiect este echivalent cu invocarea metodei; 40

41 Concepte legate de POO in C#: In C# toate obiectele sunt gestionate prin referinte. 41

42 Sintaxa definire: [atribute] [tip_acces] class Nume_Clasa [:clasa_baza] { tip_acces atribut1; tip_acces atribut2; tip_acces functie membra1; }; 42

43 tip_acces: public accesibile private neaccesibile protected accesibile claselor derivate internal accesibile claselor din acelasi assembly protected internal 43

44 atribute constante (clase1.cs): definite prin const sau readonly NU este permisa modificarea valorii odata ce au fost initializate; sintaxa: class Test { public const int atribut_1 = 10; public readonly int atribut_2; } 44

45 atribute constante definite prin const: sunt initializate doar la definire NU este permisa modificarea valorii odata ce au fost initializate; sunt considerate variabile definite la nivelul clasei si nu atribute ale unui obiect (static) sunt accesate prin numele clasei 45

46 atribute constante definite prin readonly: sunt initializate la definire sau in constructor NU este permisa modificarea valorii odata ce au fost initializate; reprezinta forma echivalenta a variabilelor const din C++ 46

47 atribute statice (clase1.cs): definite prin static definesc atribute ce nu apartin unui obiect pot fi readonly initializarea se face la definire sau prin constructor static sunt considerate variabile definite la nivelul clasei si nu atribute ale unui obiect sunt accesate prin numele clasei 47

48 atribute statice (clase1.cs): sintaxa: class Test { public static int atribut_1 = 10; public static readonly int atribut_2; } 48

49 Pointerul THIS: reprezinta adresa obiectului care apeleaza metoda membra a clasei; toate functiile nestatice membre clasei primesc implicit acest pointer; se plaseaza pe prima pozitie in lista de parametrii a metodei; 49

50 functii membre: definesc interfata obiectului; permit accesul la atributele obiectului incapsulare; definesc comportamentul obiectului; categorie speciala de functii: constructor, destructor, constructor de copiere; tipuri particulare: statice; 50

51 functii membre statice: definesc functii ce nu apartin unui obiect; reprezinta functii globale ce apartin unei clase de obiecte; au acces DOAR la alti membrii statici ai clasei; sunt apelate prin specificatorul de clasa Nume_clasa. NU primesc in lista de parametrii pointerul THIS; 51

52 functii constructor: rol principal: alocarea spatiului aferent unui obiect; rol secundar: initializarea atributelor obiectului; tipuri: implicit cu parametrii 52

53 functii constructor: au denumire identica cu a clasei; NU au tip returnat explicit deoarece returneaza implicit adresa zonei de memorie rezervata obiectului construit; sunt definite pe zona publica a clasei; forma implicita este generata de compilator daca nu este definita de programator; 53

54 functii constructor: sintaxa: class Nume_clasa { public Nume_clasa( ){ } }; apel (deoarece obiectele sunt gestionate prin referinte, crearea unui obiect se face cu operatorul new): public static void Main () { Nume_clasa obiect_1 = new Nume_clasa(); Nume_clasa obiect_2 = new Nume_clasa( parametrii constructor) } 54

55 functii constructor - static: rol principal: initializarea atributelor statice; NU au atribut de acces este apelat automat inainte de initializarea de obiecte NU pot fi apelati explicit class Nume_clasa { static Nume_clasa( ){ } }; 55

56 functii destructor: rol principal: eliberarea resurselor gestionate de un obiect si care au sens in logica problemei de rezolvat (ex: inchidere conexiune baze de date, inchidere fisier, etc); au denumire identica cu a clasei; pentru a se deosebi de constructor, numele lor este prefixat de ~; NU au tip returnat explicit; 56

57 functii destructor: NU au atribut de acces; forma implicita este generata de compilator daca nu este definita de programator; sunt apelate implicit de catre garbage collector; NU pot fi apelate explicit; pot fi onlocuite cu metoda Dispose() (avantaj: se poate apela) 57

58 functii destructor: sintaxa: class Nume_clasa { ~Nume_clasa( ){ } }; apel implicit: public static void Main () { Nume_clasa obiect_1 = new Nume_clasa(); } 58

59 constructor de copiere: rol principal: alocarea spatiului aferent unui obiect si initializarea acestuia cu valorile unui obiect existent; NU are forma implicita; este apelat explicit; importanta scazuta fata de versiunea din C++ 59

60 constructor de copiere: sintaxa: class Nume_clasa { public Nume_clasa(Nume_clasa ob_existent){ } }; apel explicit: public static void Main (){ Nume_clasa obiect_1 = new Nume_clasa( ); Nume_clasa obiect_2 = new Nume_clasa(obiect_1); } apel constructor copiere 60

61 operator = Limbajul C# NU permite supraincarcarea operatorului = 61

62 operator = rol principal: copiaza bit cu bit valoarea zonei de memorie sursa in zona de memorie a destinatiei (cele doua zone sunt identice ca structura si tip); in cazul obiectelor C#, copiaza valoarea referintei obiectului sursa in referinta obiectul destinatie 62

63 operator = apel explicit : class Nume_clasa { }; public static void Main () { Nume_clasa obiect_1 = new Nume_clasa(); Nume_clasa obiect_2( ) = new Nume_clasa(); obiect_2 = obiect_1; } 63

64 permit accesul (citire / scriere) la atributele private ale clasei presupun validarea datelor de intrare sunt definite in zona publica contin 2 metode metoda de citire se numeste get metoda de scriere se numeste set; 64

65 au forma unei structuri de date ce contine 2 metode sintaxa: public tip_atribut nume_proprietate{ get{ return } set{ } } 65

66 metoda get trebuie sa returneze o valoare de tipul tip_atribut; metoda set primeste implicit un parametru numit value de tip tip_atribut; sintaxa de utilizare a proprietatii este identica cu cea a atributului ob1.nume_proprietate = valoare; valoare = ob1.nume_proprietate; 66

67 public class Produs { } private double _cost; private float _profit; private static int nrproduse; //proprietate privata //proprietate privata //proprietate statica Accesul la membrii privati se realizeaza prin metode de tip proprietate: //proprietate pentru _profit public float Profit { get { return _profit; } set { if(value>0) _profit=value; } } Compilatorul genereaza automat public float get_profit() { return _profit;} public void set_profit( float value){ if(value>0) _profit=value; } 67

68 Shallow copy copiere de adrese intre 2 obiecte; realizata implicit prin operatorul = Deep copy copiere de continut intre 2 obiecte realizata explicit prin metode specializate (constructor copiere, Clone, etc) Exemplu: copy.cs 68

69 Implementare metoda Clone definire metoda proprie supradefinire metoda Clone din ICloneable 69

70 Auto a1; Auto a2 = new Auto(); STIVA referinta null referinta HEAP X octeti: valori a1 = a2 Shallow copy referinta referinta X octeti: valori a1 = new Auto(a2) a1 = (Auto)a2.Clone() Deep copy referinta referinta referinta referinta X octeti: valori X octeti: valori X octeti: valori X octeti: valori 70

71 Supraincarcare operatori / conversii implicite/explicite Derivare/mostenire Interfete / clase abstracte Mecanism virtualizare (virtual -> override/new) Supraincarcare indexer + suport foreach 71

72 supraincarcare functii (overloading): implementeaza conceptul de polimorfism (acelasi lucru, mai multe interpretari) atribuirea unui simbol (nume functie) mai multe semnificatii; diferenta se face in functie de semnatura functiei = numarul si tipul parametrilor; tipul returnat NU reprezinta criteriu de selectie la apel int suma(int a, int b) { return a+b; } eroare compilare situatie ambigua double suma(int a, int b) { return a+b; } 72

73 supraincarcare operatori: sunt implementati prin functii statice: sunt functii care se numesc operator [simbol] class Test{ }; interpretare void main() { Test t1, t2, t3; t1 = t2 + t3; } Test.operator+(t1,t2) (supraincarcare prin functie statica) 73

74 restrictii supraincarcare operatori: NU schimba precedenta operatorilor NU schimba asociativitatea conserva cardinalitatea (numarul parametrilor) NU creaza operatori noi formele supraincarcate nu se compun automat NU se supraincarca =.?: -> new is sizeof typeof [ ] ( ) += -= += este evaluat prin operatorul + 74

75 recomandari supraincarcare operatori: daca se supraincarca == atunci si Equals () mostenita de la object si!= daca se supraincarca un operator de comparatie atunci toti >, <, >=, <= operatorul [ ] nu se supraincarca dar pot fi definite metode de tip indexer Exemplu: numerar.cs 75

76 supraincarcare operatori unari ++ si --: 2 forme: prefixata si postfixata; prin functie membra statica; cele 2 forme (post si pre) sunt tratate unitar de catre compilatorul de C# pentru ca lucram cu referinte int vb1 = 10; int vb2 = vb1++; -> vb2 = 10 si vb1 = 11; int vb3 = 10; int vb4 = ++vb3 -> vb4 = 11 si vb3 = 11 Exemplu: numerar.cs 76

77 supraincarcare operatori unari ++ si --: class Test{ public static Test operator++ (Test t ) { //prelucrari return t; } }; 77

78 supraincarcare operatori unari ++ si --: class Test { } ++t1 sau t1++ Test t1 = new Test(); Test t2 = t1++; Test t3 = ++t1; referinta referinta referinta X octeti: valori 78

79 supraincarcare operatori binari +, -, *, /: au intotdeauna 2 parametri; comutativitatea operatiei matematice nu are sens in C# (trebuie definita explicit) prin functie statica publica; Exemplu: numerar.cs 79

80 supraincarcare operator cast: are intotdeauna 1 parametru; numele castului reprezinta tipul returnat; nu are tip returnat explicit; prin functie statica; folosit la conversia intre diferite tipuri de date; ATENTIE in C# operatorul are 2 forme de supraincarcat explicit sau implicit; Exemplu: numerar.cs 80

81 supraincarcare operator cast: class Test{ public int valoare; public static implicit operator int () { return valoare;} public static explicit operator int () { return valoare;} }; void main(){ Test t; int vb1 = t; //cast implicit int vb2 = (int) t; //cast explicit } 81

82 supraincarcare operator [ ] (indexer): este o proprietate pentru ca nu are nume se noteaza cu this ; este folosit pentru a permite acces in citire / scriere pe elementele unui sir de valori din zona privata a obiectului; indexul nu este obligatoriu de tip numeric; Exemplu: randomlist.cs 82

83 supraincarcare operator [ ] (indexer): public class RandomList{ private int[] list; } public int this[int index] { get { if (index >= 0 index < list.length) return list[index]; else return 0; } set { if (index >= 0 index < list.length) list[index] = value; } 83

84 se implementeaza cand intre clasa derivata si clasa de baza exista relatia is a; -este permisa derivarea doar dintr-o singura clasa de baza: public class ProdusSpecial : Produs { private float _discount; } -apelul constructorului din clasa de baza se face prin base: public ProdusSpecial(double cost,float profit, float discount):base(cost,profit) { if(discount>0) _discount=discount; } 84

85 prin derivare noua clasa primeste de la clasa de baza toate metodele + atributele class Baza{ int atribut1; int atribut2; }; class Derivat : Baza{ int atribut_nou; }; mostenire 85

86 fiecare constructor este responsabil strict de zona clasei pe care o reprezinta class Baza{ int atribut1; int atribut2; }; class Derivat : Baza{ int atribut_nou; }; constructor Baza mostenire constructor Baza Derivat 86

87 constructie obiect derivat = CONSTRUCTOR BAZA + CONSTRUCTOR DERIVAT class Baza{ Baza(){ } Baza(lista parametri){ } }; apel implicit Baza() class Derivat : Baza{ Derivat(){ }; SAU Derivat() : base (lista parametri) { } }; apel explicit :base(lista parametri) 87

88 UPCASTING este permisa transformarea implicita a obiectelor (referinte in C#) derivat in obiecte (referinte) de tip baza class Baza{ }; Baza X class Derivat : Baza{ }; Derivat 88

89 UPCASTING void main(){ Derivat d1 = new Derivat(); Baza b1; Baza b2 = d1; } referinta Derivat referinta Baza referinta Baza X octeti: valori null 89

90 pot fi definite functii cu acelasi header in clasa de baza si in clasa derivata class Baza{ int Metoda1(int a){ } }; class Derivat : Baza{ int atribut_nou; int Metoda1(int a){ } int Metoda2(int a){ base.metoda1(a);} }; apel explicit metoda baza 90

91 UPCASTING + redefinire metode (nevirtuale) void main(){ Derivat d1 = new Derivat() } Baza b1 = d1; b1.metoda1(5); d1.metoda1(5); forma metodei din Baza; 91

92 functii VIRTUALE: permit redefinirea (override) sau ascunderea (new) functiei din clasa de baza in clasa derivata class Baza{ public virtual int Metoda1(int a){ } }; class Derivat : Baza{ int atribut_nou; public [override new ] int Metoda1(int a){ } }; 92

93 functii VIRTUALE: versiunea functiei se stabileste la momentul executiei (late binding) in functie de modalitatea de redefinire (override vs new) fiecare clasa contine o tabela de pointeri la functii virtuale; fiecare obiect primeste un pointer la tabela de pointeri la functii virtuale daca se realizeaza UPCASTING se apeleaza metoda din clasa derivata pentru override si metoda din clasa de baza pentru new 93

94 -supradefinirea este permisa doar daca in clasa de baza metoda este anuntata virtual, iar in clasa derivata este anuntata override; public class Produs{ public virtual double PretProducator(){ return _cost*(1+_profit/100); } } ProdusSpecial:Produs{ public override double PretProducator(){ double pret = base.pretproducator(); return pret*(1-_discount/100); } } static void Main(string[] args) { ProdusSpecial ps = new ProdusSpecial(40,15,10); Console.WriteLine(" Pretul de producator al produsului special este {0}",ps.PretProducator()); // evidentiere late-binding Produs RP=ps; Console.WriteLine(" Pretul de producator al produsului special este {0}", RP.PretProducator()); 94

95 -ascunderea unei metode din clasa derivata (evitare late-binding) se face declarand metoda new (nu este obligatoriu ca metoda din clasa de baza sa fie anuntata virtual) public class Produs{ public double PretProducator(){ return _cost*(1+_profit/100); } } ProdusSpecial:Produs{ public new double PretProducator(){ double pret = base.pretproducator(); return pret*(1-_discount/100); } } static void Main(string[] args) { ProdusSpecial ps = new ProdusSpecial(40,15,10); Console.WriteLine(" Pretul de producator al produsului special este {0}",ps.PretProducator()); // evidentiere early-binding Produs RP=ps; Console.WriteLine(" Pretul de producator al produsului special este {0}", RP.PretProducator()); 95

96 POLIMORFISM (acelasi lucru, mai multe interpretari) : SUPRAINCARCAREA (OVERLOADING) de functii in cadrul unei clase SUPRADEFINIRE (REDEFINIRE) (OVERRIDE si NEW) de functii virtuale in clasele derivate 96

97 Mostenire vs Includere class Vehicol{ }; class Automobil : public Vehicol{ }; se implementeaza cand intre clasa derivata si clasa de baza exista relatia is a; 97

98 Mostenire vs Includere class Motor{ }; class Automobil{ Motor motor; }; se implementeaza cand intre clasa principala si cea inclusa exista o relatie has a; 98

99 -operatorul is este utilizat pentru a testa daca un obiect reprezinta instanta a unei anumite clase; -operatorul as face conversie de la obiect de baza la obiect derivat; daca conversia nu poate avea loc returneaza null; -conversia obiect baza la obiect derivat se face si prin cast; daca conversia nu poate avea loc se returneaza System.InvalidCastException Produs[] stoc={new Produs(100,10),new ProdusSpecial(45,10,5),new Produs(70,12),new ProdusSpecial(50,4,10)}; double ValoareStocSpecial=0; foreach(produs p3 in stoc) if(p3 is ProdusSpecial){ ProdusSpecial prodspec = p3 as ProdusSpecial; // ProdusSpecial prodspec = (ProdusSpecial) p3; ValoareStocSpecial+=prodSpec.PretVanzare(); } 99

100 functii VIRTUALE PURE - ABSTRACTE: functii virtuale ce nu au corp definit in clasa in care sunt anuntate sunt definite prin expresia abstract tip_acces tip returnat nume_functie( parametrii ); IMPUN redefinirea (overriding) functiei in clasa derivata (daca nu se doreste abstractizarea clasei derivat) IMPUN definirea clasei de tip abstract; 100

101 functii VIRTUALE PURE - ABSTRACTE: abstract class Baza_abstracta{ public abstract int Metoda1(int a) ; }; class Derivat : Baza{ pubic override int Metoda1(int a){ } }; 101

102 CLASE abstracte: clase ce contin minim o functie virtuala pura (abstracta); rol de interfata pentru clase care trebuie sa defineasca o serie de metode comune un contract intre proprietarii mai multor clase prin care se impune definirea unor serii de metode comune; contractul se incheie prin derivarea din clasa abstracta; 102

103 CLASE abstracte: NU este permisa instantierea claselor abstracte; utilizate ca suport pentru derivare abstract class Baza_abstracta{ int atribut1; public abstract int Metoda1(int a); }; void main(){ Baza_abstracta ba1; Baza_abstracta ba1 = new Baza_abstracta; } 103

104 CLASE sealed (inchise): NU este permisa derivarea claselor sealed; sealed class Baza { int atribut1; }; class Derivat : Baza { } 104

105 INTERFETE: clase ce contin numai functii abstracte; rol de interfata pentru clase care trebuie sa defineasca o serie de metode comune un contract intre proprietarii mai multor clase prin care se impune definirea unor serii de metode comune; contractul se incheie prin derivarea din interfata; se definesc prin interface (inlocuieste class) 105

106 INTERFETE: interface class IOperatii { void Operatie1( ); void Operatie2( ); }; supradefinire metode interfata class Baza : IOperatii { public void Operatie1() { } public void Operatie2() { } } 106

107 Clase abstracte contin metode abstracte + atribute + metode neabstracte o clasa poate deriva doar o clasa de baza (abstracta sau nu) poate fi utilizata ca reference type VS Interfete contin doar metode abstracte o clasa poate deriva mai multe interfete poate fi utilizata ca reference type 107

108 Punct int X; int Y; int NrPuncte; Punct * Puncte; virtual double GetNrPuncte()=0; Model2D virtual double Perimetru()=0; virtual double Arie()=0; IMasurabil Dreptunghi Cerc Patrat char * DenumireModel 108

109 Arrays, Collections Clase speciale (ArrayList / Stack / Queue / HashTable) Exemplu CallBack (amintire C++ cu pointeri la functii) Delegat Eveniment Forms 109

110 Collection Interfaces IEnumerable ICollection IComparer IComparable asigura un standard in definirea de clase tip colectie 110

111 IEnumerable ofera suport pentru operatorul foreach foreach(tip_element element in colectie) { } for(int i = 0;i< colectie.count ;i++) { tip_element element = colectie[i]; } se bazeaza pe definirea si utilizarea unui iterator 111

112 IEnumerable defineste metoda: public IEnumerator GetEnumerator( ) IEnumerator defineste metodele: public object Current() public bool MoveNext() public void Reset() clasa derivata gestioneaza atributele: referinta catre container pozitia curenta Exemplu: 2010 randomlist.cs Catalin Boja si randomlist2.cs 112

113 Collections: Array ArrayList Queue Stack HashTable ArrayProdus.cs 113

114 entitate 1 entitate 2 pointer functie date functie 1 functie 2 pointer functie date initializare pointer functie functie 1 functie 2 CALL functie CALLBACK functie 1 REZULTAT functie 2 114

115 DELEGATE un nou tip de referinta in C# delegate tip_return nume_referinta (lista parametrii); echivalent pointerului la functie din C++ tip_return (* nume_pointer) (lista parametrii); faciliteaza definirea pointerilor la functii nume_referinta pfunctie; 115

116 EVENT reprezinta un vector/lista de delegati (pointeri de functii) event tip_delegate nume_event; faciliteaza executia tututor functiilor printrun singur apel nume_event([parametrii]); Exemplu: DelegatC++.cpp si DelegatCS.cs 116

117 EVENT suporta operatorii aritmetici += si -= pentru adaugare/stergere de delegati din eveniment eveniment += new TipDelegate(metoda) Exemplu: DelegatC++.cpp si DelegatCS.cs 117

118 - un eveniment reprezinta un mesaj trimis de un obiect pentru a anunta o actiune (user interaction - mouse click, button click sau program logic - functie din program) event sender lansare (raise) event event receiver prelucrare (handle) event - in modelul de tratare a evenimentului din.net, obiectul care lanseaza evenimentul nu stie ce obiect sau ce metoda va primi si va gestiona (handle); din acest motiv este nevoie de un element intermediar intre sursa si detinatie delegat (pointer la functie) Exemplu: DelegatEvenimen1.cs Fanfara.cs 118

119 Pentru a lansa un eveniment este nevoie de 3 componente: obiect ce lanseaza event-ul; tip delegat ce defineste event-ul; obiect ce defineste continutul mesajului event data parametrii Ex: class FireEventArgs: EventArgs delegat defineste evenimentul Ex: public delegate void FireEventHandler(object sender, FireEventArgs fe); event sender lanseaza evenimentul Ex: class FireAlarm{ } 119

120 FireAlarm myfirealarm = new FireAlarm(); STIVA HEAP myfirealarm FireAlarm FireEvent null COD 120

121 FireAlarm myfirealarm = new FireAlarm(); FireHandlerClass myfirehandler = new FireHandlerClass(myFireAlarm); STIVA HEAP myfirealarm FireAlarm FireEvent myfirehandler - FireHandlerClass nu are atribute COD FireHandlerClass. ExtinguishFire(object sender, FireEventArgs fe) prin constructor aboneaza la myfirealarm.fireevent propria metoda ExtinguishFire Exemplu: DelegatEvenimentFire.cs 121

122 using System; using System.Windows.Forms; using System.Drawing; obiect derivat din Form public class Formular:Form { public Formular() { Text = Exemplu Formular"; Size = new Size(400,400); } public static void Main() { Application.Run(new Formular()); } } caracteristici gestionate prin proprietati csc/t:winexe /r:system.dll /r:system.drawing.dll /r:system.windows.forms.dll Formular.cs 122

123 using System.Windows.Forms; public class Formular:Form{ private Button bnclick; Adaugare control la colectia de controale a formularului public Formular2(){ Text = "Test Formular"; Size = new Size(400,400); bnclick = new Button(); bnclick.text = "Click Me"; bnclick.size = new Size(60,24); bnclick.location = new Point(20,60); bnclick.click += new EventHandler(bnclick_Click); obiect de tip Button Controls.Add(bnclick); } private void bnclick_click(object sender, EventArgs ev) { } } abonare la event-ul Click al clasei Button metoda handler event Click 123

Pointeri si referinte

Pointeri si referinte Pointeri si referinte In C++ exista doua modalitati de lucra cu adrese de memomorie: pointeri si referinte. Pointeri Pointerii sunt variabile care contin adresa unei alte zone de memorie. Ei sunt utilizati

Nadere informatie

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven.

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven. 1 Inleiding tot.net Software werd en wordt meestal geschreven in C of C++. De broncode van een C/C++ programma wordt dan gecompileerd naar machine code, die eventueel nog gelinkt wordt met machine code

Nadere informatie

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces. Hoofdstuk 1: Inleiding Objectoriëntatie: 1. Objecten & klassen: samenwerking van componenten om bepaald doel te bereiken; herbruikbaarheid. 2. Encapsulation: afschermen gedragingen en kenmerken van de

Nadere informatie

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int

Nadere informatie

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen.

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen. Indexers in C#.Net In deze tutorial ga ik het hebben over indexers. Bij het gebruik van bijvoorbeeld een ArrayList object, kan je de gegevens uit deze collectie opvragen als ware het een array. // ArrayList

Nadere informatie

Een gelinkte lijst in C#

Een gelinkte lijst in C# Een gelinkte lijst in C# In deze tutorial ga demonstreren hoe je een gelinkte lijst kan opstellen in C#. We gaan een klasse schrijven, die een gelijkaardige functionaliteit heeft als een ArrayList, namelijk

Nadere informatie

Visual Basic 2005 nieuwe taalelementen André Obelink, MCSD, MVP

Visual Basic 2005 nieuwe taalelementen André Obelink, MCSD, MVP Visual Basic 2005 nieuwe taalelementen André Obelink, MCSD, MVP Auteur, VBcentral.nl Microsoft MVP Visual Basic VP Speakers Bureau INETA Europe - www.europe.ineta.org www.vbcentral.nl - www.obelink.com

Nadere informatie

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double. Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort

Nadere informatie

Zelftest Programmeren in Java

Zelftest Programmeren in Java Zelftest Programmeren in Java Document: n0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST PROGRAMMEREN IN JAVA Deze test

Nadere informatie

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B; Beschouw bijvoorbeeld de twee onderstaande klassen, waarvan de attributen en eigenschappen geannoteerd zijn met bijkomende XML-annotaties: using System ; using System. Xml ; using System. Xml. S e r i

Nadere informatie

3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken

3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken 18 Februari 2013 Tigran Gasparian 3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken Gydo Nieraeth 4 e jaars student, 3 e jaars GameTech C++ ervaring: Software

Nadere informatie

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur 1. (2 punten per deelvraag) Deze opgave bestaat uit een aantal tekstvragen. Houd het antwoord kort: een

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)

Nadere informatie

C# 6 Door Alex en Chris van Beek

C# 6 Door Alex en Chris van Beek C# 6 Door Alex en Chris van Beek Over ons Enthousiastelingen Software Architecten bij Luminis Arnhem B.V. Gespecialiseerd in Microsoft technologie:.net, Azure en Windows Twitter: @Beekje en @cbeek Blog:

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 18 december 2015 Overerving (inheritance) Constructors Overriding Inheritance demo Exceptions Zelf exceptions veroorzaken Overerving (inheritance) 2-dimensionaal

Nadere informatie

Ingebouwde klassen & methodes

Ingebouwde klassen & methodes Ingebouwde klassen & methodes Statische methodes Methodes die bij een klasse horen ipv. bij een object public class Docent { public static Docent departementshoofd() { return new Docent("Jan Ivens"); private

Nadere informatie

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, 8.30 10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers);

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers); bestand voertuig.h biz. 1 van 2 #ifndef VOERTUIG H #define VOERTUIG H #include using std::string; class Voertuig { public: Voertuig(); Voertuig(const string& inschrijvingsnumrner, const string&

Nadere informatie

ASP.NET Test 2009-2010. Jan Van Ryckeghem

ASP.NET Test 2009-2010. Jan Van Ryckeghem ASP.NET Test 2009-2010 Jan Van Ryckeghem Inhoud Exceptionhandling H4... 3 Try Catch slide 25... 3 Error pagina slide 29... 3 Error.aspx... 3 Error.aspx.cs... 4 Web.config... 4 Logbestand aanmaken... 4

Nadere informatie

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Kwis (3) class X { public void a() { System.out.println(x); public static void main(string[] args) { X x = new X(); Kwis (3) class X { public void a() { System.out.println("x"); class Y extends X { public void a() { System.out.println("y"); class Z extends Y { public void a() { System.out.println("z"); public static

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

Labo 1 Programmeren II

Labo 1 Programmeren II Labo 1 Programmeren II L. Schoofs K. van Assche Voor de OA Labo Programmeren II programmeren we in C# en met Microsoft Visual Studio 2005 als ontwikkelomgeving (voorlopig beta2). Deze IDE maakt gebruik

Nadere informatie

Voorbeeld: Simulatie van bewegende deeltjes

Voorbeeld: Simulatie van bewegende deeltjes Voorbeeld: Simulatie van bewegende deeltjes Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten Simulatie Samenhang van objecten sim geërfd van Form stap zelf gedeclareerd auto r1

Nadere informatie

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 1 februari 2019, 11.00 13.00 uur Voor de meerkeuzevragen hebben we verschillende versies. Dit zijn de juiste antwoorden per versie.

Nadere informatie

Advanced C ++ Programming Datastructuren 2018

Advanced C ++ Programming Datastructuren 2018 Advanced C ++ Programming Datastructuren 2018 Jonathan K. Vis j.k.vis@lumc.nl Jonathan K. Vis Advanced C++ Programming 1 / 26 Vorige week Vragen? Tentamen, programmeeropgaven en eindcijfer; Partiële resultaten

Nadere informatie

IMP Uitwerking week 13

IMP Uitwerking week 13 IMP Uitwerking week 13 Opgave 1 Nee. Anders moet bijvoorbeeld een venster applicatie een subklasse zijn van zowel Frame en WindowListener. Als de applicatie ook een button of een menu heeft, dan moet het

Nadere informatie

Kleine cursus PHP5. Auteur: Raymond Moesker

Kleine cursus PHP5. Auteur: Raymond Moesker Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven

Nadere informatie

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING DIAGNOSTISCHE TOETS Softwaresystemen datum: Donderdag van Week 7 UITWERKING Deze diagnostische toets bevat vragen over excepties en concurrency. Beantwoord de vragen zo goed mogelijk in 30 minuten Bespreek

Nadere informatie

INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE...

INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE... Inhoudsopgave INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE... 3 1 OOP EN.NET... 11 1.1 Inleiding... 11 1.2 Kwaliteit van een programma... 11 1.2.1 Correctheid en bruikbaarheid... 11 1.2.2 Robuustheid...

Nadere informatie

Maak een pivot uit een Generic.List

Maak een pivot uit een Generic.List Maak een pivot uit een Generic.List Introductie in extensions, reflection en code generation Nivo: 400 Introductie In bepaalde gevallen komt het voor dat je een Generic.List van een specifieke class hebt,

Nadere informatie

Modulewijzer Tirdat01

Modulewijzer Tirdat01 Modulewijzer Tirdat01 W. Oele 25 augustus 2008 1 Inhoudsopgave 1 Inleiding en leerdoelen 3 2 Voorkennis 3 2.1 tirprg01 en tirprg02........................ 3 2.2 tirprg03.............................. 4

Nadere informatie

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10 CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel

Nadere informatie

Programmeren in C# Interfaces. Hoofdstuk 23

Programmeren in C# Interfaces. Hoofdstuk 23 Programmeren in C# Interfaces Hoofdstuk 23 Programmeren in C# 2 Gradaties overerving Klassieke overerving Iets functioneels uitbreiden Code duplicatie Niet teveel aanpassingen aan bestaande code Objecten

Nadere informatie

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, 17 20 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar 2006-2007 23 Januari, 2007 **BELANGRIJK** : Schrijf je naam onderaan dit blad Leg volgende 3 begrippen kort en bondig uit : a. Concurrent

Nadere informatie

Datastructuren Werkcollege Intro

Datastructuren Werkcollege Intro Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs

Nadere informatie

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, 11.00-13.00 uur 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan

Nadere informatie

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, 17 20 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Java. Basissyllabus. Egon Pas

Java. Basissyllabus. Egon Pas Java Basissyllabus Egon Pas 2011 BeanPole bvba Gasmeterlaan 92-9000 Gent BTW BE 472.902.516 Tel: + 32 9 224 42 17 Fax: + 32 9 223 62 88 www.beanpole.be info@beanpole.be 1 Programmeren 1.1 Hoe werkt een

Nadere informatie

Syntax van opdracht. opdracht. expressie. variabele. = expressie ; klasse naam. methode naam. property naam += object

Syntax van opdracht. opdracht. expressie. variabele. = expressie ; klasse naam. methode naam. property naam += object Syntax van opdracht opdracht klasse naam methode naam ( expressie ) ; object expressie. property naam +=, variabele = expressie ; Static gewone methoden Bewerken een object Aanroep: object. methode ( )

Nadere informatie

Programmeren in C# Klassen schrijven

Programmeren in C# Klassen schrijven Programmeren in C# Klassen schrijven In dit hoofdstuk Klassestructuur Private variabelen Publieke methoden (public) Properties Constructormethodes Private methodes (private) Static methodes en properties

Nadere informatie

VB Magazine Online 2004 01/08 1 / 6

VB Magazine Online 2004 01/08 1 / 6 Een van de krachtigste elementen binnen Visual Basic 2003 vind ik wel de mogelijkheid om objecten te overerven; ook wel inheritance genoemd. U kunt niet alleen uw eigen classes en business objecten overerven,

Nadere informatie

Tentamen Imperatief Programmeren

Tentamen Imperatief Programmeren Tentamen Imperatief Programmeren Maandag 22 oktober 2001 Toelichting Dit is een open boek tentamen, d.w.z. het cursusboek mag gebruikt worden. N.B.: Het tentamen is individueel: voor het maken van de opgaven

Nadere informatie

Programmeren in C# Samenvatting van C#

Programmeren in C# Samenvatting van C# Programmeren in C# Samenvatting van C# Proceduraal Programmeren Functies (O: void + return, I: referentie of value) Arrays, Lijsten Lussen (for, while, do while) Condities, if-else, switch Variabelen,

Nadere informatie

C++ programmeermethoden Bachelor Kunstmatige Intelligentie

C++ programmeermethoden Bachelor Kunstmatige Intelligentie C++ programmeermethoden Bachelor Kunstmatige Intelligentie laatste (2e) Deeltentamen Datum: 1 juni 2017 Tijd: 17.00-19.00 Aantal pagina s: 12 (inclusief voorblad) Aantal vragen: 5 Maximaal aantal te behalen

Nadere informatie

Overerving & Polymorfisme

Overerving & Polymorfisme Overerving & Polymorfisme Overerving Sommige klassen zijn speciaal geval van andere klasse Docent is een speciaal geval van werknemer, dwz. elke docent is ook werknemer Functionaliteit van docent = functionaliteit

Nadere informatie

LEREN PROGRAMMEREN IN C#.NET - INTRODUCTIE ADO.NET

LEREN PROGRAMMEREN IN C#.NET - INTRODUCTIE ADO.NET #INFORMATICA LEREN PROGRAMMEREN IN C#.NET - INTRODUCTIE ADO.NET BESPAAR MET DE KMO-PORTEFEUILLE 2178,00 incl. BTW I.S.M. OMSCHRIJVING Omschrijving Organisaties die op middellange termijn keuze moeten maken

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, uur

Uitwerking Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, uur Uitwerking Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, 11.00-13.00 uur 1. In een constructormethode (a) moet je een nieuw object van de klasse aanmaken (b) kun je membervariabelen

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 9 december 2015 Foreach String arrays Boomstructuren Interfaces Ingebouwde datastructuren Quiz Foreach Foreach Speciale versie van for om iets voor alle elementen

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)

Nadere informatie

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014! Inleiding Software Engineering Unit Testing, Contracten, Debugger 13 Februari 2014 Beknopte info over Unit Testing en Contracten kan je vinden op het einde van dit document. Eclipse beschikt over een handige

Nadere informatie

Objectgericht programmeren 1.

Objectgericht programmeren 1. Objectgericht programmeren 1 joost.vennekens@kuleuven.be http://www.cs.kuleuven.be/~joost/dn Objectgericht ontwerpen 35% Objectgericht ontwerpen 65% OP1 Informatiesystemen 50% Databanken 50% OP1 Evaluatie

Nadere informatie

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Digitale

Nadere informatie

Academie voor ICT en Media 2013/2014

Academie voor ICT en Media 2013/2014 Academie voor ICT en Media 2013/2014 Toets Opleiding BI CMD I IDM ISM TI Voltijd Deeltijd Duaal Lokatie Den Haag Zoetermeer Delft 1e afname moment herkansing Verantwoordelijke docent John Visser Module

Nadere informatie

ArcGIS Mobile ADF. Smart Client Applicaties voor ArcGIS Server Eva Dienske, Wim Ligtendag

ArcGIS Mobile ADF. Smart Client Applicaties voor ArcGIS Server Eva Dienske, Wim Ligtendag ArcGIS Mobile ADF Smart Client Applicaties voor ArcGIS Server Eva Dienske, Wim Ligtendag Agenda Wat is de Mobile ADF? Architectuur Demo Wat is de mobile ADF? Ontwikkeltoolkit voor mobiele (Smart Client)

Nadere informatie

ECTS fiche. Module info. Evaluatie. Gespreide evaluatie. Eindevaluatie OPLEIDING. Handelswetenschappen en bedrijfskunde HBO Informatica

ECTS fiche. Module info. Evaluatie. Gespreide evaluatie. Eindevaluatie OPLEIDING. Handelswetenschappen en bedrijfskunde HBO Informatica ECTS fiche Module info OPLEIDING STUDIEGEBIED AFDELING MODULE MODULENAAM Programmeren 1 MODULECODE A5 STUDIEPUNTEN 10 VRIJSTELLING MOGELIJK ja Handelswetenschappen en bedrijfskunde HBO Informatica Evaluatie

Nadere informatie

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf

Nadere informatie

Lessen Java: Reeks pag. 1

Lessen Java: Reeks pag. 1 Lessen Java: Reeks 2 1-3-2016 pag. 1 Primitieve types type grootte waardes byte 8 bits 128, 127 short 16 bits 32768, 32767 int 32 bits 2 31, 2 31 1 long 64 bits 2 63, 2 63 1 type grootte waardes float

Nadere informatie

datastructuren college 13

datastructuren college 13 datastructuren college 13 GUI deel 2 1 events for the GUI een event is iedere voor het programma van buiten komende gebeurtenis muis knop in, nog steeds in, los, bewogen... het GUI-systeem doet veel werk

Nadere informatie

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college EE1400: Programmeren in C BSc. EE, 1e jaar, 2012-201, e college Arjan van Genderen, Computer Engineering 4-12-2012 Delft University of Technology Challenge the future Hoorcollege Arrays, Pointers en Strings

Nadere informatie

Introductie in C++ Jan van Rijn. September 2013

Introductie in C++ Jan van Rijn. September 2013 Introductie in C++ Jan van Rijn September 2013 Inhoud Classes Overerving Const correctness Standard C++ library Templates Classes Voordelen van classes: Modelleren Modulariteit Informatie afschermen Makkelijk(er)

Nadere informatie

Uitwerking Derde deeltentamen Imperatief programmeren Vrijdag 8 november 2013, uur

Uitwerking Derde deeltentamen Imperatief programmeren Vrijdag 8 november 2013, uur 1 Uitwerking Derde deeltentamen Imperatief programmeren Vrijdag 8 november 2013, 8.30 10.30 uur 1. Voor elk punt (x, y) van het platte vlak, waarbij x en y reële getallen zijn, kan een bijbehorend getal

Nadere informatie

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 21 oktober 2011, uur

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 21 oktober 2011, uur Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 21 oktober 2011, 11.00-13.00 uur 1. Deze opgave bestaat uit een aantal tekstvragen. Houd het antwoord kort: een of twee zinnen per onderdeel

Nadere informatie

Het.NET framework in vogelvlucht

Het.NET framework in vogelvlucht Het.NET framework in vogelvlucht De basis voor.net applicaties Danny Greefhorst Het.NET framework is de basis voor het.net platform en bestaat zowel uit een ontwikkel- als een runtime-omgeving. De ontwikkelomgeving

Nadere informatie

Een stoomcursus door Edgar de Graaf, november 2006

Een stoomcursus door Edgar de Graaf, november 2006 Programmeren in Java Een stoomcursus door Edgar de Graaf, november 2006 Deze tekst geeft een zeer korte inleiding in de programmeertaal Java, uitgaande van kennis van de taal C++. Daarnaast bestudere men

Nadere informatie

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, uur

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, uur Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 december 2013 Terugblik Fibonacci public class Fibonacci { public static void main(string[] args) { // Print het vijfde Fibonaccigetal System.out.println(fib(5));

Nadere informatie

Deel 1 : Gesloten Boek

Deel 1 : Gesloten Boek Naam : EXAMEN SOFTWAREONTWIKKELING 1STE PROEF BURG. IR. COMPUTERWETENSCHAPPEN EERSTE EXAMENPERIODE ACADEMIEJAAR 2004-2005 Deel 1 : Gesloten Boek 1. Testen Geef een overzicht van de verschillende testen

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden : stapels, rijen en binaire bomen Walter Kosters week 12: 26 30 november 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 en Vierde programmeeropgave Othello programmeren we als volgt:

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in

Nadere informatie

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Programmeren 1 23 januari 2013 Prof. T. Schrijvers Programmeren 1 23 januari 2013 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

Labo 2 Programmeren II

Labo 2 Programmeren II Labo 2 Programmeren II L. Schoofs K. van Assche Gebruik Visual Studio 2005 om een programma te ontwikkelen dat eenvoudige grafieken tekent. Deze opgave heb je vorig academiejaar reeds in Java geïmplementeerd.

Nadere informatie

Elementary Data Structures 3

Elementary Data Structures 3 Elementary Data Structures 3 Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 29 september 2014 ODE/FHTBM Elementary Data Structures 3 29 september 2014 1/14 Meer

Nadere informatie

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A Eskwadraat. A Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen. Aanvullende

Nadere informatie

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, 11.00-13.00 uur 1. Een klasse is niet: (a) het type van een object (b) een groepje methoden (c) een groepje variabelen

Nadere informatie

Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, uur

Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, uur Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 19 oktober 2012, uur

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 19 oktober 2012, uur Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 19 oktober 2012, 11.00-13.00 uur 1. Deze opgave bestaat uit een aantal tekstvragen. Houd het antwoord kort: een of twee zinnen per onderdeel

Nadere informatie

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, uur

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, uur Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, 8.30-10.30 uur 1. Wat kan gezegd worden van het stukje programma b=!b (a) De expressie b=!b heeft altijd de waarde

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 november 2013 Organisatie Docenten Jeroen Bransen Michael Moortgat Docenten Jeroen Bransen Imperatief programmeren (Java) Tot de kerst (ongeveer) Michael Moortgat

Nadere informatie

Geplande activiteiten voor de periode binnen de

Geplande activiteiten voor de periode binnen de Geplande activiteiten voor de periode 01.07.2018-30.06. binnen de PARTNERSCHAPSOVEREENKOMST VOOR EEN KWALITATIEVE MEDISCHE EN SOCIALE THUISZORG IN HET DEPARTEMENT BUZAU, ROEMENIË (2017-) Algemeen doel:

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 2 september 2007 voor deeltijdstudenten Kop van Zuid Rotterdam, 3 juni 2007 Even voorstellen Naam: Wessel Oele(31) Docent bij opleiding technische informatica Kamer: I210 (tweede verdieping, links de gang

Nadere informatie

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek

Nadere informatie

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, uur

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, uur Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het

Nadere informatie

C++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies

C++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1 Commentaar In C: /* Deze functie berekent de omtrek van een cirkel */ float

Nadere informatie

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 2, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Terugblik Functies Organisatie (architectuur) van programma s Arrays Structuren

Nadere informatie

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2015. Parallel Systems: Introduction

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2015. Parallel Systems: Introduction Informatica Deel II: les 1 Java versus Python Jan Lemeire Informatica deel II februari mei 2015 Parallel Systems: Introduction Arabidopsis (zandraket) Arabidopsis (zandraket) MMIQQA Multimodal Microscopic

Nadere informatie

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse Objective-C Basis 23 april 2005, Eindhoven Patrick Machielse patrick@hieper.nl Algemeen // extensies Objective-C code in bestanden met.m extensie // commentaar moet! /* Alles hiertussen wordt genegeerd

Nadere informatie

Versturen van email vanuit een Delphi VCL toepassing

Versturen van email vanuit een Delphi VCL toepassing Versturen van email vanuit een Delphi VCL toepassing Voor Delphi bestaan uiteraard verschillende libraries om emails te versturen, maar in dit voorbeeld wordt een C# Dotnet library gebruikt en aangesproken

Nadere informatie

Lessen Java: Reeks 3. David Blinder Jan G. Cornelis

Lessen Java: Reeks 3. David Blinder Jan G. Cornelis Lessen Java: Reeks 3 David Blinder Jan G. Cornelis Vraag 0: Gebruik van de Debugger Syntax errors: fouten door verkeerd gebruik van Javacommandos code zal niet compileren. Locatie van de fout is bijna

Nadere informatie

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 9 november 2018, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 9 november 2018, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 9 november 2018, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

DOMjudge teamhandleiding

DOMjudge teamhandleiding judge DOMjudge teamhandleiding Samenvatting /\ DOM DOM judge Hieronder staat de belangrijkste informatie kort samengevat. Dit is bedoeld om snel aan de slag te kunnen. We raden echter ten zeerste aan dat

Nadere informatie

Inleiding C++ Coding Conventions

Inleiding C++ Coding Conventions Inleiding C++ Coding Conventions Opleiding Bachelor of Science in Informatica, van de Faculteit Wetenschappen, Universiteit Antwerpen. Nota s bij de cursus voor academiejaar 2012-2013. Ruben Van den Bossche,

Nadere informatie

Programmeertechnieken Week 6

Programmeertechnieken Week 6 Programmeertechnieken Week 6 Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/pt2017/ Exception handling Murphy's Law: "Anything that can go wrong, will go wrong." Exception handling (2)

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 18 oktober 2013, uur

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 18 oktober 2013, uur Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 18 oktober 2013, 11.00-13.00 uur 1. (a) Wat is een null pointer? In welke situatie onstaat er een null pointer exception? Een null pointer

Nadere informatie

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur Naam: Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, 11.00-13.00 uur Studentnummer: Het tentamen bestaat uit 3 opgaven. Opgaven 1 levert 20 punten op, opgave 2 levert 10 punten op, en opgave

Nadere informatie