Programmering i C++ EDA623 Något om C# EDA623 (Föreläsning 14) HT / 17



Relevanta dokument
Övning Dictionary. Övning 1. Steg 1: På din virtuella maskin, starta Visual Studio.

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Polymorfi. Objektorienterad och komponentbaserad programmering

Föreläsning 8: Exempel och problemlösning

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Tentamen. Lösningsförslag

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Laboration 13, Arrayer och objekt

Föreläsning 6: Metoder och fält (arrays)

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

TDDC77 Objektorienterad Programmering

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Instuderingsfrågor, del D

Objektorienterad programmering i Java

Laboration 10 - Eclipse

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Malmö högskola 2007/2008 Teknik och samhälle

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Language Integrated Query, LINQ, och databaser

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

OOP Objekt-orienterad programmering

Tentamen, EDA501 Programmering M L TM W K V

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Att skriva till och läsa från terminalfönstret

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2. Länkad lista och iterator

TDDD78 Viktiga begrepp, del 2

Arv. Objektorienterad och komponentbaserad programmering

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

Laboration A Objektsamlingar

Del A (obligatorisk för alla)

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Inledande programmering med C# (1DV402) Introduktion till C#

Laboration 10 - NetBeans

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Objektorienterad Programmering (TDDC77)

Metoder - en funktion: medel

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Lösningsförslag övning 2.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Objektorienterad Programmering (OOP) Murach s: kap 12-16

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

Tentamen, EDAA20/EDA501 Programmering

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Tentamen, EDAA20/EDA501 Programmering

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

TENTAMEN OOP

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Dugga i Grundläggande programmering STS, åk

Föreläsning 12: Exempel och problemlösning

Tentamen Programmeringsteknik för BME, C, D, E, F, I, N & Pi

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Lösningar för tenta 3 DAT043,

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Lösning till tentamen EDAA45 Programmering, grundkurs

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Föreläsning 2, vecka 8: Repetition

DAT043 Objektorienterad Programmering

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Arrayer. results

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Tentamen i Grundläggande programmering STS, åk 1 lördag

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Arv Murach s: kap 14

Föreläsning 2. Länkad lista och iterator

Föreläsning 7. Träd och binära sökträd

Föreläsning 3. Stack

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Tentamen , Introduktion till Java, dtaa98, dtea53

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Lösningar för tenta 2 DAT043,

Föreläsning 3. Stack

Tillämpad programmering

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

Programmering för språkteknologer II, HT2011. Rum

Transkript:

Programmering i C++ EDA623 Något om C# EDA623 (Föreläsning 14) HT 2013 1 / 17

De sista pusselbitarna Innehåll Hello World Lite historik Tillgänglighet Jämförelse med C++ Ny for-variant (foreach) Egenskaper (properties) Indexerare (indexer) Delegater (delegates) Mallar (generics) EDA623 (Föreläsning 14) HT 2013 2 / 17

Hello World Klassiskt testprogram Exempel using System; class HelloWorld static void Main(string []args) if (args.length == 0) Console.WriteLine("Hello World"); else string name = args[0]; Console.WriteLine("Hello, 0", name); Console.ReadKey(); // Vänta på inmatning EDA623 (Föreläsning 14) HT 2013 3 / 17

Lite historik 1996 Anders Hejlsberg > Microsoft 2000 Standardisering av C# och CLI påbörjad 2001 Ecma-standard (v. 1.2) 2003 ISO-standard (v. 1.2) 2005 Version 2.0 (Ecma & ISO) 2007 Version 3.0 2010 Version 4.0 2012 Version 5.0 EDA623 (Föreläsning 14) HT 2013 4 / 17

Tillgänglighet Visual C# Referensimplementation. Endast Windows Visual Studio Express 2013 Mono Linux, Windows, Mac OS http://mono-project.com/ DotGNU Linux, Mac OS m fl. Projektet lagt på is 2012 http://www.gnu.org/software/dotgnu/ EDA623 (Föreläsning 14) HT 2013 5 / 17

Jämförelse med C++ Inga globala variabler eller funktioner Pekare kan bara användas i kodblock märkta med nyckelordet unsafe Säkrare (starkare) typning Garbage collector används Kompilering till CIL (Common Intermediate Language) Exekvering på CLR (Common Language Runtime) (ett slags virtuell maskin) EDA623 (Föreläsning 14) HT 2013 6 / 17

Ny for-variant: foreach Exempel på ny struktur (finns liknande i Java och C++11) using System; public class ForeachTest public static void Main() int sum = 0; int[] nums = new int[10]; for(int i = 0; i < 10; i++) nums[i] = i; foreach(int x in nums) Console.WriteLine("Value is: " + x); sum += x; Console.WriteLine("Summation: " + sum); Console.ReadKey(); // Vänta på inmatning EDA623 (Föreläsning 14) HT 2013 7 / 17

Egenskaper (properties) Systematisering av set och get public class Customer private int m_id = -1; public int ID get return m_id; set m_id = value; private string m_name = string.empty; public string Name get return m_name; set m_name = value; EDA623 (Föreläsning 14) HT 2013 8 / 17

Egenskaper (properties) Användning av properties using System; public class CustomerTest public static void Main() Customer cust = new Customer(); cust.id = 1; cust.name = "Nils Nilsson"; Console.WriteLine( "ID: 0, Name: 1", cust.id, cust.name); Console.ReadKey(); EDA623 (Föreläsning 14) HT 2013 9 / 17

class IntIndexer private string[] mydata; public IntIndexer(int size) mydata = new string[size]; for (int i = 0; i < size; i++) mydata[i] = "empty"; public string this[int pos] get return mydata[pos]; set mydata[pos] = value; // Main-funktionen EDA623 (Föreläsning 14) HT 2013 10 / 17 Indexerare (indexer) Att vektorisera en struktur

class IntIndexer public static void Main(string[] args) int size = 10; IntIndexer ind = new IntIndexer(size); ind[9] = "En sträng"; ind[3] = "En till"; ind[5] = "Någonting"; Console.WriteLine("\nIndexer Output\n"); for (int i = 0; i < size; i++) Console.WriteLine("ind[0]: 1", i, ind[i]); EDA623 (Föreläsning 14) HT 2013 11 / 17 Indexerare (indexer) Huvudprogram för indexerare using System;

Delegater (delegates) Motsvarar funktionspekare i C/C++ using System; // Själva delegatdeklarationen public delegate int Comparer(object obj1, object obj2); // "Testklass" public class Name public string FirstName = null; public string LastName = null; public Name(string first, string last) FirstName = first; LastName = last; // Forts. följer... EDA623 (Föreläsning 14) HT 2013 12 / 17

Delegater (forts.) // En möjlig delegat public static int CompareFirstNames(object name1, object name2) string n1 = ((Name)name1).FirstName; string n2 = ((Name)name2).FirstName; if (String.Compare(n1, n2) > 0) return 1; else if (String.Compare(n1, n2) < 0) return -1; else return 0; public override string ToString() return FirstName + " " + LastName; // Slut på testklassen Name EDA623 (Föreläsning 14) HT 2013 13 / 17

Delegater (forts.) // Huvudprogrammet class SimpleDelegate Name[] names = new Name[4]; public SimpleDelegate() names[0] = new Name("Nils", "Nilsson"); names[1] = new Name("Otto", "Olsson"); names[2] = new Name("Nils", "Jonsson"); names[3] = new Name("Lena", "Ohlsson"); static void Main(string[] args) SimpleDelegate sd = new SimpleDelegate(); // Här skapas delegat-objektet (här en "jämförare") Comparer cmp = new Comparer(Name.CompareFirstNames); Console.WriteLine("\nBefore Sort: \n"); sd.printnames(); // Lägg märke till delegat-argumentet! sd.sort(cmp); Console.WriteLine("\nAfter Sort: \n"); sd.printnames(); // Forts. följer... EDA623 (Föreläsning 14) HT 2013 14 / 17

Delegater (forts.) Metoden Sort som utnyttjar delegaten (en komparator) public void Sort(Comparer compare) object temp; for (int i=0; i < names.length; i++) for (int j=i; j < names.length; j++) // Använd delegaten "compare" som om det vore en metod if ( compare(names[i], names[j]) > 0 ) // Byt plats temp = names[i]; names[i] = names[j]; names[j] = (Name)temp; // Forts. följer... EDA623 (Föreläsning 14) HT 2013 15 / 17

Delegater (forts.) Till sist: PrintNames (observera användningen av foreach!) public void PrintNames() Console.WriteLine("Names: \n"); foreach (Name name in names) Console.WriteLine(name.ToString()); // SimpleDelegate EDA623 (Föreläsning 14) HT 2013 16 / 17

Mallar Fungerar som i Java: using System; class Test<T> public static void swap(ref T a, ref T b) T tmp = a; a = b; b = tmp; class Testa public static void Main() string s1 = "hej", s2 = "tjo"; Console.WriteLine("Före: 0-1", s1, s2); Test<string>.swap(ref s1, ref s2); Console.WriteLine("Efter: 0-1", s1, s2); EDA623 (Föreläsning 14) HT 2013 17 / 17