GUI: Overerving: •
•
Klassen niet gemeenschappelijke eigenschappen. Deze eigenschappen kinnen in een meer algemene klasse worden geschreven. Vb student, docent Æ persoon Uitbreiding van reeds bestaande klassen.
Geneste klassen • • •
Klassen en interface worden gedeclareerd in een andere klasse/interface. Vermeiden Altijd static
Nonstatic nested classes = innerclass • Object van innerclass is altijd geassocieerd met object van omsluitende class • Local inner class • Anonymous inner class
Observer patroon
•
Verschilllende Observer‐objecten kijken naar wijzigingen/gebeurtenissen in aantal Observerable‐ objecten. Vb: Temperatuur Å C°/F°/K/… Indien het object ‘temperatuur’ veranderd zullen de Observers mee veranderen . Er is geen actie zolang er geen wijziging is bij de Observerable object. Public void update (observable obj, object arg) obj = object dat wijzigt arg = mogelijkheid iets extra door te gaven van observable naar observers.
•
“extends observable” = observer functie toevoegen in code “implements observable” = eigen observer maken te beginnen van de al bestaande observer
AWT • • • •
Basisklasse component Container bevat component (en is een component) Heavyweight componenten: native code voor op scherm 3 stappen o Widgets, containers & layout o Eventhandlers o Display (automatisch voor applets, start thread voor opvang user interactive)
Niet handig door het gebruik van native code, oplossing hiervoor is SWING
SWING Voordelen bij: • • •
Veel wijzigingen in UI Dezelfde data op verschillende manieren tonen Duur en veel fouten als UI nauw verweven met functionele kern
ModelViewController • Model: kern data & functionaliteit • View: toont informatie aan de gebruiker • Controller: handelt user‐inputs
Consistensie tussen model en UI zorgt de change‐propagation mechanisme.
Eventhandling
Voordeel
Nadeel
AWT Swing Even opvangen door methodes te ‐ Event is object en grijpt plaats overschrijven in object ‐ Meerdere eventklasses (Action, Mouse,..) ‐ Handling wordt gedelegeerd naar ander object (= listener) ‐ Bij event wordt listeners gewaarschuwd ‐ Snelheid door gebruik van ‐ Kan op elk platform native code ‐ Groot bereik van de ‐ Goede browser componenten set ondersteuning ‐ Ja kan de GUI zelf ‐ Beste OS integratie configureren OS onafhankelijk ‐ compabiliteti (native ‐ extra plug‐in voor de browser code) ‐ trager, pure java ‐ veel kleinere ‐ lijkt niet op de native GUI van componenten set het OS
C# Delegate • • • •
Is een object dat een referentuie naar een methode kan bevatten Methode kan opgeroepen worden door deze referentie Analoog aan functiepointer in C/C++ Declaratie: delegate returntype delegatename(parameterlijst)
Event • •
= automatische melding dat een actie heeft plaatsgegrepen Werking: o Object dat interesse heeft in gebeurtenis registreert eventhandler o Als event optreedt: alle geregisteerde handelers worden opgeroepen o Evenhandlers worden voorgesteld door delegaties
C Variabelen en constanten • •
Inhoud kan wijzigen tijdens het uitvoeren van het programma. Naam voor een stukje geheugen.
Primitieve datatypes •
Int, double, char,…
Declaraties van variabelen en constanten • •
#define PI 3.14159 Enumeration constant: constante weergeven door middel van nummer; lente=0 zomer=1
Operatoren • • • •
Rekenkundige: ++, +, * Vergelijkings: <, <=,==,!= Logische: ! (not), && (and) Toekenning: =, +=, *=
Eenvoudige in/output • •
Output: printf(“getal = %d”,q) met ‘%d’ plaats van de integer opgeslagen in variable ‘q’ Input: scanf(“%d”,q)
Controle structuren •
•
Selectie o If o Switch o Conditionele operator Herhaling o For o While o Do (‐while)
Array’s • • • •
Groeperen van gegevens van eenzelfde datatype Elk element wordt benaderd via index In C elk element na elkaar in geheugen volgens oplopende index Eenmaal array gedeclareerd grootte niet meer aan te passen
Introspectie Mogelijkheid om bij runtime het type van het object te achterhalen.
Reflectie Het process waarbij een programma zijn eigen stuctuur en gedrag kan bekijken en aanpassen.
Database toegang vanuit programma’s
De connectie kan op verschillende manieren gebeuren: • • • •
Microsoft: ODBC Java: JDBC C# (+ andere): ADO.net Object Relational Mapping (ORM)
ODBC Open DataBase Connectivity, ontwikkeld door SQL. Heeft als doel om toegang te maken tot gelijk welke data tot gelijk welke toepassing. Onafhankelijk van het Database Management System (DBMS) De database driver vertaalt de dataqueries afkomstig uitde applicatie naar commando’s verstaanbaar voor het DBMS. Laat programma’s toe om SQL te gebruiken zonder de interface naar de databank te kennen. Nadeel: databank moet geregistreerd zijn (windows niveau)
Java & JDBC Java DataBase Connectivity Databanken toegankelijk vanuit Java. 4 mogelijkheden: • • • •
JDBC‐ODBC bridge Java en native driver Java en middelware puur Java
Voordelen JDBC: • • •
Eenvoudig Ook via netwerk, enkel URL nodig Toegang tot metadata (info over data, vb type van een kolom)
ADO.net • • • • •
Multi‐tier: gemakkelijk code op verschillende lagen van toepassing te gebruiken Enkel tijdelijke connecties met de databank XML based Schaalbaar Snel zeker ism SQLserver
Nadeel: • •
niet mogelijk wijzig dataprovider zonder code te wijzigen Native dataproviders maar voor beperkt aantal databanken beschikbaar.
Dataset: • • • •
Kan meer dan 1 datatable bevatten Wijzigingen worden bijgehouden Ondervragen ook mogelijk zonder databank Converteerbaar naar XML
Datareader: •
snel ophalen van data, enkel voorwaarts doorlopen van een resultaatset
Data‐adapter: • •
Brug tussen dataset en databron Gebruikt commando’s voor aanpassen databron als dataset wijzigd.
ORM Object Relational Mapping • •
Programma: objecten (class persoon met lijst van telefoonummers) Databank: relationeel (tabellen met enkelvoudige data)
Techniek waarbij gegevens uit databases gekoppeld worden aan object georiënteerde programmatalen. Hierdoor ontstaat een soort van virtuele database die kan benaderd worden door programmeertalen. Voordeel: •
Niet bezig houden met data uit resultset te halen en in objecten te plaatsen, of bijvoorbeeld de data in de objecten in de databank te bewaren.
Nadeel: •
Traag, door het automatiseert toevoegen van code is deze niet afgestemd op je databank en is er overhead.
Compileren en decompileren Compileren: Programmacode naar een formaat dat de computer verstaat. Bij java Æ .java(tekstueel) ÎcompilenÎ .class (binair)
Interpreten: •
Instructies in broncode worden via parser vertaalt
Voordeel: Testen gaat sneller Nadeel: programma uitvoeren trager omdat instructies telkens opnieuw worden omgezet JVM zal de .class files eerst interpreteren. Worden ze veel gebruikt dan worden ze ook omgezet.
Decompileren Van binaire code (.class) Æ java (.java) Nadeel: iedereen kan je programma dan lezen. Obfuscators; deze verduisteren de .class Indien je PC geen JVM bezit kan je ook gebruik maken van programma’s die rechtstreeks omzetten naar native code.
Debuggen Programma onderzoeken op fouten. Debuggen door zelf de variabelen op het scherm te plaatsen door printf of door een build in programma die de variabelen in de gaten houdt. Met breekpunten laat je je debugger de code doorlopen tot op een bepaald punt. Loggen: wordt tussen de code geplaatst. Kan je indelen in verschillende graden van belangrijkheid om zo slechte de output tot een minimum te herleiden. Wordt gebruikt om fouten op te sporen aan de hand van de handelingen door de gebruiker.
XML Wat? • • •
Markuptaal (zoals html), het toevoegen van symbolen om zo aan te geven hoe de tekst eruit ziet. Ontwikkeld om data te beschrijven en te structureren XML tags, zelf te definiëren, sommige toepassingen standaard
XML <> HTML • HTML toont de data terwijl XML de data beschrijft, XML daarom geen vervanger voor HTML. Waarom? Creëren/bewaren/verzenden van elektronische informatie beperkt en gecontroleerd door de gebruikte applicatie. Vb Word, excell, … XML laat toe meer controle zelf uit te voeren. Voordelen: • Gemakkelijke implementatie en compatibel met SGML/HTML • Geleerd uit ervaringen met HTML • XML is corss‐platform, soft‐hardware onafhankelijk middel voor het bewaren en versturen van informatie • Bruikbaar met bestaande webprotocols (http) en mechanismes (URL) • Meerdere toepassingen mogelijk (HTML te speciefiek) • Gemakkelijk te verwerken door programma’s (java, javascript, C++,…) • Formele en korte specificatie • XML documenten gemakkelijk te verstaan en te maken. • Uitgebreid link mechanisme • Unicode • Data oriented, niet human oriented (gemakkelijk door computers te behandelen)
Validatie DTD Document Type Definition Validatie = kijken of XML‐document voldoen aan de beschrijvingen (=regels) volgens DTD. • •
Well formed: conform de XML syntax Valid: Well formed + conform regels DTD.
Doel: Definieren van legale bouwblokken voor XML‐documenten Bij het uitwissel van XML‐documenten tussen applicaties is er een beschrijving nodig Æ DTD Alles wat niet specifiek is goedgekeurd wordt niet toegstaan Nadeel: te weinig datatypes Xschema Voordelen tov DTD: • • • •
DTD te weinig datatyperingen DTD niet schaalbaar en uitbreidbaar Moeilijk om onafhankelijke DTD’s te combineren DTD niet goed samen met namespaces
XML‐documenten zijn Xschema’s
Relatie Xlink Verwijzing naar 1 of meerdere documenten via URI Xpath Taal om informatie in XML documenten te vinden en te navigeren dor de elementen en de attributen. Werkt met knopen; parent, child, broer Xpointer Verwijzing naar deel in een document (Bij HTML eerst echt nodig ankers te plaatsen) Xquery Taal om XML‐documenten te ondervragen. Maakt gebruik van xPath.