C# for javaprogrammerere

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
C++ for Java-programmerere
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Uke 8 - Mer om: Objekter, klasser og pekere
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Objektorientert programmering i PHP del 2
IS-102 Klassedefinisjoner
C for Java-programmerere
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
Objekt-orientering og Java
Åsmund Eldhuset asmunde stud.ntnu.no folk.ntnu.no/asmunde/algdat/
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
En gang til!? .
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 11 Applet’s Hva karakteriserer applet’sside.
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Kap 05 Abstrakte datastrukturer. Arv - Implementering Interface / Abstrakte klasser / Konkrete klasser Concrete classAbstract class Interface extends.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
INF 295 Algoritmer og datastrukturer Forelesning 2 - kapittel 1 Hans F. Nordhaug (Ola Bø)
ADA 95 – del3 Foreleser: Olaf Hallan Graven Bok: Programming in ADA95 (2nd) John Barnes.
Høgskolen i Oslo Webprogrammering Ajax og PHP. I dag l Hvordan få en bedre brukeropplevelse via Ajax- script l Gjennomgang av kode l Oppgaveløsning på.
Java 11 Programmering med og uten objekter: hva er forskjellen?
OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger.
Arv og polymorfi, del 3 Modifikatoren abstract side 2-3
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
02 - Java datatyper Grundlæggende om datatyper og variable.
CORBA Noen hull som må fylles: ORB Object Adapters CORBA services IDL Factory Objects.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
09 – Arv og polymorfi i java
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Inf1000 (Uke 10) HashMap og ArrayList
INF1000 (Uke 4) Mer om forgreninger, While-løkker
XML og JDOM Helge Furuseth XML  XML = Extensible Markup Language Basert på SGML – Standard Generalized Markup Language  HTML =
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 9 Polymorfi. 9.1 Sein binding Ofte er det perfekt match mellom typen til ein variabel og objektet han refererer til ChessPiece bishop;... bishop.
Kapittel 3 Bruk av klasser og objekt. 3.1 Å lage objekt Eit variabelnamn i Java representerer Ein primitiv verdi (f eks boolean, int ) Eit objekt (f eks.
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Typeparametrisering Generel kode (generisk kode).
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
IS-102 Interaksjon med objekter
Utskrift av presentasjonen:

C# for javaprogrammerere Åsmund Eldhuset asmunde stud.ntnu.no folk.ntnu.no/asmunde/algdat/ @

C# 

GUI-lyttere Klassen MyWindow skal lytte på okButton og cancelButton OK

Utskrift til skjerm Console.WriteLine() tilsvarer System.out.println() System.Diagnostics.Trace.WriteLine() har mer avanserte muligheter Kan bruke {} til å skrive ut argumenter: int a = 4; Console.WriteLine("Kvadratet av {0} er {1}", a, a*a);

Nullable types C# har ikke Integer, Long, Float, Double eller noen av de andre wrapper-klassene OK i forbindelse med containers, siden de støtter de primitive typene Men hva hvis man vil ha en tallvariabel som kan være null? Svar: nullable types Lages ved å sette ? etter en primitv type int? a = null;

XML-kommentarer

Attributes

Arv Java: public class A extends B implements C C#: public class A : B, C

Partial classes Tillater at du deler opp en klassedefinisjon over flere filer, ved å føye partial til klassedeklarasjonen Alle "overskriftene" i partial-delene må være like (f.eks. må de extende samme klasse osv.) public partial class MyPartialClass

Constructors Java: public MyClass(int a, int b) { super(a); this.b = b; } C#: public MyClass(int a, int b) : base(a) { this.b = b; }

Overriding av metoder Hvis en metode skal kunne overrides, må baseklassen markere den med virtual: public class A { public virtual void someMethod() {...} } Subklassen må markere den med override: public class B : A { public override void someMethod() {...} } Du kan lage en ny metode som skjuler den gamle med new: public class C : A { public new void someMethod() {...} }

Sammenligning Som i Java: == brukt på primitive datatyper (int, float, ...): sammenligner verdien brukt på objektreferanser: sammenligner referansene for å se om det er samme objekt Unntak i C#: brukt på String/string vil == sammenligne verdiene String a = new String("hei"); String b = new String("hei"); Java: a == b er false C#: a == b er true

Foreach Java: ArrayList numbers = new ArrayList(); numbers.add(8); numbers.add(42); for (Object a : numbers) System.out.println((Integer)a); C# kan gjøre casten for deg automatisk: ArrayList numbers = new ArrayList(); numbers.Add(8); numbers.Add(42); foreach (int a in numbers) Console.WriteLine(a);

GUI-lyttere i Java public class MyWindow implements ActionListener { private JButton okButton; private JButton cancelButton; ... public MyWindow() { okButton.addActionListener(this); cancelButton.addActionListener(this); } public void actionPerformed(???) { if (src == okButton) { ... } else if (src == cancelButton) { ... } } }

GUI-lyttere i Java: Problemer MyWindow må implementere ActionListener og må dermed ha metoden actionPerformed Vi skal lytte på flere objekter, men alle disse vil utløse samme metode (actionPerformed) Dermed må vi ha en (potensielt stor) if-blokk for å sjekke hvilket objekt som utløste handlingen Grunnleggende problem: Lyttere i java må implementeres vha. interfaces – andre klasser kan kun jobbe mot referanser til objekter som implementerer et visst interface – man får ikke muligheten til å spesifisere metoden selv Hvis man har behov for flere lyttere, må den observerte klassen ha et Set med lyttere – mer strevsomt å kode

Interface-referanser i Java og C# Objekt B (observatør) Implementerer Observable-grensesnitt Objekt A (observert) observer observedChanged()

Delegater i C# ICanCallThisMethodWhateverIWant() observer

Delegates og events En delegate er en referanse til en bestemt metode i et bestemt objekt En deklarasjon av en delegate må fortelle parametre og returtype til metoden: public delegate void ObserverDelegate(int); Ut fra en delegate kan man lage events: public event ObserverDelegate observers; Enhver metode som har int som parameter og returnerer void kan legges til denne eventen

Delegates og events Delegater kan legges til eller fjernes fra en event med += og -= Observer observer = new Observer(); observers += new ObserverDelegate(observer.observation); Alle delegatene som er lagt til en event vil utløses når du kaller eventen: observers(42);

Collections

Generics

Namespaces C# sitt svar på pakker Java: package MyPackage; C#: namespace MyNamespace { ... } Du kan ha flere namespaces inni samme fil Namespaces kan nøstes: namespace Outer { namespace Inner { ... }} tilsvarer namespace Outer.Inner { ... }

Kodestandarder Metoder, medlemsvariabler og properties som er public bør ha stor forbokstav Venstre krøllparentes skal stå på en egen linje

Operator overloading Du kan definere hvordan operatorer skal oppføre seg ovenfor klassene dine

Properties Alternativ til gettere og settere, med mer behagelig syntaks Java: private int number; public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } System.out.println(obj.getNumber()); obj.setNumber(42);

Properties C#: private int number; public Number { get { return number; } set { number = value; } } Console.WriteLine(obj.Number); obj.Number = 42; Kan dermed lett lage illusjonen av read-only-variabler

Output-parametre Hvis du vil returnere flere verdier fra en funksjon, kan dette gjøres indirekte gjennom et parameter som markeres med out Metoden får da tilgang til å modifisere variabelen slik at endringen er synlig for omverdenen float divide(int n, int d, out int quotient, out int remainder) { quotient = n / d; remainder = n % d; return n / (float)d; }

Structs