Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Relevanta dokument
Språkkonventioner och redigering av tal.

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

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

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

Fördjupad Java. Undantagshantering. Fel

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

JAVAUTVECKLING LEKTION 7

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

OOP Objekt-orienterad programmering

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

List.java. List.java. Printed by Tom Smedsaas

Föreläsningar 9, 10 (okt 01, okt 03 v 40). delvis DD Chapter 7.

Tentamen Nätverksprogrammering Lösningsförslag

Hämta data mha URLer Föreläsning 2b. Innehåll Klassen URL

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

Föreläsning 3. Stack

Objektorienterad programmering i Java

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Föreläsning 3. Stack

Föreläsnings 9 - Exceptions, I/O

D0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut "Hello world" på skärmen.

Laborationer, moment 4 5

Laborationer, moment 4 5

Chapter 4: Writing Classes/ Att skriva egna klasser.

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Laboration 13, Arrayer och objekt

Tentamen Nätverksprogrammering Lösningsförslag

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

%M UQ(LGHUElFN 1. Internetprogrammering 1999, 2D4334-föreläsning10a. Nätverk av datorer. CORBA: vad, varför, hur? Internetprogrammering F 10a

F4. programmeringsteknik och Matlab

OOP Objekt-orienterad programmering

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Lösningsförslag, tentamen FYTA11 Javaprogrammering

TDDC77 Objektorienterad Programmering

LÖSNINGSFÖRSLAG

Föreläsning 7. DD2390 Internetprogrammering 6 hp

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

Föreläsning 3: Booleans, if, switch

Lösningar för tenta 2 DAT043,

Kap J 7-1 Mer om arv. (superklass) (subklass)

Concurrency Saker händer samtidigt. Process En instans av ett program

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

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

Föreläsning 14. Filhantering

Obligatorisk uppgift: Numerisk kalkylator

Obligatorisk uppgift: Numerisk kalkylator

Distribuerad programmering med CORBA Föreläsning CORBA: vad, varför, hur?

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

TENTAMEN OOP

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

Del A (obligatorisk för alla)

Tentamen FYTA11 Javaprogrammering

Hur ser ett Java-program ut?

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

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

Översikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop

Tentamen Programmering fortsättningskurs DIT950

JAVA Mer om klasser och objektorientering

Objektorienterad Programmering (TDDC77)

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043,

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

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

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

JAR som tar eller zip. Java. Exekvering

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

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

Tentamen. Lösningsförslag

FÖRSLAG TILL LÖSNINGAR, TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2, , kl

Felhantering. Andra brott mot språkets regler. Man kan också i programmet bryta mot ett antal olika regler som gäller. Exempelvis:

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Objektorienterad Programmering (TDDC77)

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

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

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

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

Tentamen , Introduktion till Java, dtaa98, dtea53

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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.

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Malmö högskola 2008/2009 CTS

Tentamen , Grundläggande programmering i Java

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

OOP Objekt-orienterad programmering

Transkript:

Fakulteten för ekonomi, kommunikation och IT Corba Datum: 2007-10-17 Namn: Kurs: Henrik Bäck Mathias Andersson DVGC02

Innehållsförteckning Implementation 3 IDL-fil 3 Server 3 Klient 3 Körning 3 Bilagor 3 Hello.idl 3 Server.java 3 Client.java 5 calculator_impl.java 9 Sida 2 av 10

Implementation IDL-fil Först definieras de funktioner och dess parametrar i IDL-filen. Detta talar om för systemet vilka funktioner som skall finnas tillgängliga på servern från klienten. När IDLfilen är implementerad körs den genom ett program som kontrollerar filens syntax och om denna är korrekt skapar ett antal hjälpfiler och implementationsfiler för programmet. Server I serverprogramvaran måste funktionerna implementeras. I filen calculator_impl.java imp lementeras de verkliga funktionerna. Det är dessa funktioner som sedan utför arbetet som kallas på från olika klienter. I servern lades också kod till för att skriva ner information om objektet calulator till den fil som används för att informera klienten om servern och objekten. Klient Klienten läser upp en fil från disk innehållande information om var servern finns tillgänglig för de nedströmmade objekten. Klienten har ett mycket enkelt användargränssnitt som låter användaren välja mellan de fyra räknesätten. Varje funktion anropar servern med de tal som användaren har matat in. Uträkning utförs på servern och resultatet returneras till klienten. Körning Först startas server upp på en maskin. En fil skapas på disken med information om den aktuella servern. Denna fil kan sedan flyttas till den dator där man vill köra klienten. Klienten måste ha samma IDL som servern. Bilagor Hello.idl module HelloWorld ; interface Hello string hello(); string tiden(); ; interface Calculator ; double add(in double a, in double b); double sub(in double a, in double b); double div(in double a, in double b); double mul(in double a, in double b); Server.java ******************************************************************* *** Sida 3 av 10

Server program for Hello World package Created by Anna Brunstrom Modified by Stefan Alfredsson Sep 2000 to use jdk1.3.x corba impl. Modified from a demo program Copyright (c) 1998 Object-Oriented Concepts, Inc. Billerica, MA, USA All Rights Reserved ******************************************************************* *** package HelloWorld; import java.lang.object; import org.omg.corba.*; import java.io.*; import java.util.*; public class Server public static void main(string args[]) Create ORB ORB orb = ORB.init(args, null); Calculator_impl calculator = new Calculator_impl(); Let the ORB know about the object. orb.connect(calculator); Save reference Very important to write down the right reference here. You write down the reference to all the servants registered. A servant is an implementation of an Interface, defined Spara identitetsinformation för kalylatorn och skriv detta till fil String ref1 = orb.object_to_string(calculator); String reffile = "Hello.ref"; FileOutputStream file = new FileOutputStream(refFile); PrintWriter out = new PrintWriter(file); out.println(ref1); out.flush(); Sida 4 av 10

file.close(); catch(ioexception ex) System.err.println("Can't write to `" + ex.getmessage() + "'"); Run implementation wait for invocations from clients java.lang.object sync = new java.lang.object(); synchronized (sync) sync.wait(); catch(exception ex) System.err.println(ex.getMessage()); ex.printstacktrace(); System.exit(0); Client.java package HelloWorld; import org.omg.corba.*; import java.io.*; import java.util.*; public class Client Standalone program initialization public static void main(string args[]) Create ORB ORB orb = ORB.init(args, null); Get "hello" object String ref1 =null; Sida 5 av 10

Hämta objektsinformation från fil String reffile = "Hello.ref"; FileInputStream file = new FileInputStream(refFile); BufferedReader in = new BufferedReader(new InputStreamReader(file)); ref1 = in.readline(); file.close(); catch(ioexception ex) System.err.println("Can't read from `" + ex.getmessage() + "'"); Skapa ett objekt från den inlästa objektinformation org.omg.corba.object obj1 = orb.string_to_object(ref1); if(obj1 == null) throw new RuntimeException(); Calculator calculator = null; /* A doublecheck to control if it is the right object.*/ if(obj1._is_a(calculatorhelper.id()) == true) calculator = CalculatorHelper.narrow(obj1); else System.out.println("Program terminates, since not correct object for Calculator"); System.exit(-1); Hantera användaren InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); System.out.println("This is the Calculator!"); System.out.println("Select your math function:"); System.out.println(" 1. Addition"); System.out.println(" 2. Subtraction"); System.out.println(" 3. Division"); System.out.println(" 4. Multplication"); String choice_in = null; int choice_sel = 0; double a = 0, b = 0; System.out.print("Select: "); Sida 6 av 10

choice_sel = Integer.parseInt(choice_in); switch (choice_sel) case 1: System.out.println(" ADDITION"); System.out.print("Enter a number: "); a = Double.parseDouble(choice_in); System.out.print("Enter another number: "); b = Double.parseDouble(choice_in); System.out.print(" "); Utför det som behöver göras System.out.println(a + " + " + b + " = " + calculator.add(a,b)); break; case 2: System.out.println(" SUBTRACTION"); System.out.print("Enter a number: "); a = Double.parseDouble(choice_in); System.out.print("Enter another number: "); Sida 7 av 10

b = Double.parseDouble(choice_in); System.out.print(" "); Utför det som behöver göras System.out.println(a + " - " + b + " = " + calculator.sub(a,b)); break; case 3: System.out.println(" DIVISION"); System.out.print("Enter a number: "); a = Double.parseDouble(choice_in); System.out.print("Enter another number: "); b = Double.parseDouble(choice_in); System.out.print(" "); Utför det som behöver göras System.out.println(a + " / " + b + " = " + calculator.div(a,b)); break; case 4: System.out.println(" MULTIPLICATION"); System.out.print("Enter a number: "); a = Double.parseDouble(choice_in); System.out.print("Enter another number: "); Sida 8 av 10

b = Double.parseDouble(choice_in); System.out.print(" "); Utför det som behöver göras System.out.println(a + " * " + b + " = " + calculator.mul(a,b)); break; default: break; catch(comm_failure ex) System.err.println(ex.getMessage()); ex.printstacktrace(); System.exit(0); calculator_impl.java package HelloWorld; public class Calculator_impl extends _CalculatorImplBase Constructor Calculator_impl() public double add(double a, double b) return (a + b); public double sub(double a, double b) return (a - b); public double div(double a, double b) return (a / b); public double mul(double a, double b) Sida 9 av 10

; return (a * b); Sida 10 av 10