XML-RPC över Jabber. ACM Classification. ACM Special interest groups. Abstrakt. 1. Inledning
|
|
- Henrik Åström
- för 6 år sedan
- Visningar:
Transkript
1 XML-RPC över Jabber Ronnie Snellman Department of Computer Science Åbo Akademi University, FIN Åbo, Finland URL: Oktober 2004 ACM Classification C.2.4 Distibuted systems C.2.6 Internetworking D.2.11 Software architectures ACM Special interest groups ACM SIGCOMM Abstrakt Jabber är ett XML-baserat protokoll som används för kommunikation över Internet, bl.a. vid Instant Messaging (liksom MSN, ICQ och Yahoo). Kommunikationen sker med hjälp av meddelanden, som skickas via XML-strömmar över HTTP. I denna artikel undersöks Remote Procedure Call (RPC) inpackade in Jabber-meddelanden. XML-RPC är en teknologi som implementerar RPC och som underlättar integrerandet av RPC och Jabber. 1. Inledning Användningen av Internet har tilltagit kraftigt under det senaste dicenniet. Därtill har intresset för distribution av tyngre datorberäkningar inom nätverk blivit allt vanligare. Genom att kombinera olika teknologier för utveckling av distribuerade system med kommunikation över Internet kan man bygga ett lättförståeligt och utbyggbart, distribuerat system. I denna artikel gås igenom en stegvis uppbyggnad av ett sådant system.
2 2. XML och RPC 2.1 XML XML står för Extensible Markup Language, vilket betyder utbyggbart märkningsspråk. Språket har tilltagit i popularitet under de senaste åren, för att strukturera både lagrad data och dataströmmar. Informationen struktureras genom att man märker olika delar med etiketter (en. Tags). Nedan visas ett exempel hur man kan använda sig av XML för att märka en enkel svensk fras gramatikaliskt. Texten innan märkning: Pelle sparkar boll. Den märkta texten: <sats> <subjekt>pelle</subjekt> <predikat>sparkar</predikat> <objekt>boll</objekt> </sats> För att peka ut de enskilda satsdelarna har man märkt dem med etiketter som berättar vilket element respektive ord utgör i satsen. En XML-ström är i korthet utbyte av data genom strömning av XML-fragment över en nätverksuppkoppling. Under en uppkopplingssessions livstid, mellan två enheter, utbyts två fullständiga XML-dokument - ett i varje riktning. Det första som skickas är dokumentbeskrivningen (en. Header) och den yttersta etiketten i varje dokument är <stream/>. [Ada02][Suo04] 2.2 Remote Procedure Call (RPC) RPC teknologin är mycket äldre än Internet, då det presenterades första gången redan 1984 av A.Birell och B.J.Nelson. RPC påminner om lokala metodanrop men kan utföras på en annan dator som finns i samma nätverk. Idén med RPC är att det skall finnas ett gränssnitt för fjärrmetodanrop, som påminner så mycket som möjligt om ett lokalt metodanrop. På så sätt behöver programutvecklaren inte skriva någon nätverkskod, utan kan koncentrera sig på själva funktionaliteten av det system han utvecklar. För att parterna i ett RPC-system skall förstå varandra, omskrivs metodanropen, parametrarna och metodsvaren till ett gemensamt format. Denna omskrivning kallas att ordna (en. Marshalling) parametrarna. [All03][R1] 2
3 2.3 Olika implementationer av RPC Det finns många olika implementationer av RPC, varav Sun RPC var en av de första. Senare kom CORBA, DCOM, JavaRMI, XML-RPC och SOAP. De två sistnämnda skiljer sig i det avseendet att kommunikationen sker ovanpå ett annat protokoll, närmare bestämt Hypertext Transfer Protocol(HTTP), medan de tidigare kommunicerar direkt över socketar. CORBA är en objektorienterad version av RPC, men den är relativt complex då den verkliga överföringen av data sker via binära eller ASCII strömmar, vilka inte är lika lättlästa som XML strömmar. Därför lämpar sig XML-RPC bättre för distribuerade webapplikationer. DCOM är Microsofts motsvarighet till CORBA och är mest användbar om också resten av systemet består av COM-komponenter (d.v.s. komponenter tillverkade av Microsoft). SOAP (Simple Object Access Protocol) är i princip en fortsättning på XML-RPC, med en hel del funktioner tillsatta. Detta har gjort SOAP mera invecklat, men det är fortfarande användbart.[ada02][stl01][all03][r2] 2.4 XML-RPC XML-RPC är en implementation av RPC där XML används för att ordna parametrarna i anropen och svaren och kommunikationen sker över HTTP. Senare i detta kapitel följer exempel på metodanrop och svar. Eftersom XML är en fristående standard, d.v.s inte beroende av något programmeringsspråk, är det mycket praktiskt att använda XML för att kommunicera inom system med komponenter skrivna i olika programmeringsspråk XML-RPC protokollet RPC-servern finns tillgänglig på en given URL (= Internetadress). Ett XML-RPC anrop sker i följande steg: 1. RPC-klienten (den anropande processen) gör ett metodanrop på vanligt vis, genom att ange metodnamn, parametrar och serveradress. 2. En XML-RPC klient packar in metodnamnet och parametrarna i XML och skickar ett HTTP POST-anrop till den angivna HTTP-servern. 3
4 3. Den anropade HTTP-servern tar emot ett POST-anrop och skickar vidare XML innehållet till en XML-RPC server. 4. XML-RPC servern parsar ut metodnamnet och parametrarna ur XML koden och anropar den önskade lokala metoden med de angivna parametrarna. 5. Metoden returnerar svaret till XML-RPC servern, som packar in svaret i XML. 6. HTTP-servern returnerar XML-paketet, som svar på HTTP POST-anropet. 7. XML-RPC klienten parsar ut svaret ur XML-paketet och returnerar det till RPCklientprogrammet. 8. RPC-klientprogrammet fortsätter exekveringen med det mottagna svaret. Det finns inget som hindrar en process från att vara både klient och server i ett XML- RPC-system, men för varje enskilt anrop har varje process antingen rollen som klient eller server. HTTP-protokollet är tillståndslöst, vilket betyder att två på varandra följande anrop inte på något sätt kan bindas till varandra. XML-RPC ärver denna egenskap och har alltså inte heller något tillstånd. Ifall tillstånd måste finnas i systemet, kan man implementera dessa i ett ovanpå liggande lager. [StL01][R4] XML-RPC meddelanden Ett XML-RPC-anrop börjar med etiketten <methodcall/> och svaret börjar med <methodresponse/>. I anropet kommer metodnamnet som följande i etiketthierarkin och det märks upp med etiketten <methodname/>. För att bifoga parametrar till ett metodanrop (eller svar) märker man dem med etiketten <params/>. Även om inga parametrar bifogas i anropet måste denna etikett finnas med. Inuti params-fragmentet listas sedan parametrarna med hjälp av etiketten <param/>, samt innanför den ifrågavarande datatyp, t.ex. <int/> eller <string/>. XML-RPC understöder bara ett begränsat antal datatyper, vilket leder till att man ibland måste översätta det använda programmeringsspråkets datatyp till motsvarande i XML-RPC. Vilka datatyper som XML-RPC understöder finns listade i appendix A. Alternativt till parametrarna i svarsmeddelandet kan man ange ett felmeddelande, med hjälp av etiketten <fault/>. Felmeddelandet innehåller endast ett element, vilket är av typen struktur, och använder etiketten <struct/>. Strukturen består i sin tur av två delar, faultcode och faultstring. Den 4
5 första delen är avsedd för programmet och den senare är läsbar också för användaren. Nedan följer exempelfragment på anrop-, svar- samt felmeddelande. [StL01] Metodanrop: <?xml version="1.0"?> <methodcall> <methodname> examples.squareroot </methodname> <params> <param> <value><int> 9 </int></value> </param> </params> </methodcall> Metodsvar: <?xml version="1.0"?> <methodresponse> <params> <param> <value><int> 3 </int></value> </param> </params> </methodresponse> Felmeddelande: <?xml version="1.0"?> <methodresponse> <fault> <value> <struct> <member> <name> faultcode </name> <value><int> 4 </int></value> </member> <member> <name> faultstring </name> <value><string> Too many parameters. </string></value> </member> </struct> </value> </fault> </methodresponse> På grund av att XML-RPC sker över HTTP krävs en beskrivning (en. Header) på varje skickat anrop. Detta för att web-servern skall veta vart anropet skall vidarebefordras. En beskrivning kan se ut som följande: 5
6 POST /target.php HTTP/1.0 User-Agent: PHP XMLRPC 1.0 Host: xmlrpc.usefulinc.com Content-Type: text/xml Content-Length: 216 URLen efter POST anger vart anropet skall dirigeras. Host anger vilken server som skall ta emot anropet. Content-Length anger hur många 8-bits tecken meddelandet innehåller (börjande efter beskrivningen) Säkerhetsaspekter vid XML-RPC HTTP påstås av kritiker inte vara designad för XML-RPC eftersom datatrafiken kan röra sig alltför fritt mellan olika datorer. En XML-RPC server blir vanligtvis refererad via en URL, som i princip även kunde peka på en vanlig HTML-sida. Det finns inget sätt att veta om en URL pekar på någon speciell typ av sida. XML-RPC gör det möjligt att komma åt flera olika metoder via ett POST-anrop till en och samma URL (man måste bara ange metodnamnet). Problemet är vad man skall låta XML-RPC servern göra ifall den blir kallad av en användare som förväntar sig en vanlig HTML-sida. En möjlighet vore att svara med ett prydligt meddelande i HTML, som berättar att ingen sida finns tillgänglig. Alternativt kunde man helt enkelt stänga av uppkopplingen. En del programutvecklare ser XML-RPC och andra protokoll som använder sig av HTTP som ett hot mot datorsäkerheten. Detta p.g.a. att HTTP och port 80 getts alla rättigheter att komma in i en dator för att t.ex. leverera internetsidor. På samma sätt kan XML-RPCanrop ta sig igenom diverse skyddssystem såsom brandmurar, proxyn och olika typer av filter. [StL01] 3. Jabber RPC 3.1 Jabber som kommunikationsmedium Jabber är en kommunikationsteknologi baserad på XML-strömmar för kommunikation över HTTP, mellan två eller flera datorer. Detta vanligaste användningområdet av Jabber är Instant Messaging (IM). Trots att anrop över HTTP är synkrona, kan Jabberkommunikationen ses som asynkron. Detta p.g.a att mellan anropet och svaret, som sker i varsin XML-ström (en klient->server och en server->klient), kan förekomma XMLfragment som inte har med anropet att göra. För att para ihop ett metodanrop med dess 6
7 svar används ett unikt identifikationsattribut i meddelandena. En Jabber-server har en komponent kallad Jabber Session Manager (JSM), som koordinerar en session mellan två eller flera klienter. Ifall inte mottagaren av ett meddelande är inloggad sparar JSM meddelandet i en kö tills denne loggar in, varpå meddelandet levereras. När en klient loggar in till en Jabber-server underrättar JSM alla klientens kollegor att denne loggat in. På motsvarande sätt meddelas samtliga förändringar i en klients status åt dennes kollegor. Protokollet som JSM implementerar kallas Extensible Messaging and Presence Protocol (XMPP). Mellan entiteterna i Jabber skickas element av tre olika typer: Message, Info/Query (IQ) och Presence (sv. Meddelande, Info/Förfrågan och Närvaro). Varje elementtyp har en viss funktion i systemet. Se tabellen i appendix B för de olika elementens egenskaper. [R5][R6] I och med att Jabber är baserat på XML, och således utbyggbart, kan man använda protokollet för mycket annat än bara IM. I Jabber används flitigt en av XML-standardens viktiga funktioner, s.k. namnrymder (en. Namespace). Namnrymder används för att markera vart ett XML-fragment tillhör, vilket är viktigt vid utbyggande av protokollet. För Jabber-elementen message och presence används etiketten <x/>, för att ange en extension av elementet. På motsvarande sätt används etiketten <query/> för IQ-element. För att ge en referens åt ett fragment används argumentet xmlns (förkortning av XML namespace). Se XML-fragmentet nedan för exempel. [Ada02][Suo04] <message type= chat from= sender@work to= reciever@home > <subject> Hejsan! </subject> <body> Hej hur mår du? Här får du en intressant länk: </body> <x xmlns= jabber:x:oob > <url> </url> <desc> The official Jabber site. </desc> </x> </message> Ett typiskt Jabber-meddelande. <subject/> och <body/> etiketterna är triviala, medans <x/> etiketten är en extension av message-elementet. 3.2 XML-RPC via Jabber Hittills har behandlats två skilda teknologier som använder sig av XML: XML-RPC för representation av RPC anrop och Jabber för överföring av strukturerad data mellan entiteter i ett distribuerat nätverk. Nästa steg är att slå ihop dessa, d.v.s. göra metodanrop 7
8 via Jabber. Detta är enkelt p.g.a. att både Jabber-meddelanden och XML-RPC är representerade i XML. 3.3 Förberedelser För att kunna sätta igång ett Jabber XML-RPC system krävs en del förberedelser innan klienterna kan kommunicera med varandra. Systemet kommer att utnyttja IM konceptet som i Jabber är implementerat med XMPP. Såväl metodanroparen som svararen måste vara registrerade Jabber-användare, d.v.s. ha ett unikt Jabber-id (JID) samt ett lösenord. Registreringen sker enklast med hjälp av någon grafisk Jabber klient, t.ex. Exodus. Därefter måste vardera klient gokänna sin kollega genom en s.k. anhållan (en. Subscription), vilket innebär att en klient A önskar sätta till en ny kontakt, klient B, till sin kontaktlista och skickar en förfrågan på detta till en Jabberserver. Servern frågar i sin tur lov av klient B om huruvida A får lägga till denne i sin kontaktlista. Ifall B gokänner det, skickas en verifikation via servern till klient A och denne får automatiskt en förfrågan om huruvida B får lägga till A. Detta blir det naturliga scenariot i detta fall, trots att man vanligtvis inte gokänner kontakter, som man inte känner från verkliga livet, allt för att förhindra eventuella trakasserier. Ifall en anhållan inte gokänns av motparten sker heller inte tillägget i kontaktlistan. När väl två klienter har varandra i sina kontaktlistor kan de börja kommunicera. Enligt XMPP finns ett antal tillstånd (en. Status) en klient kan befinna sig i, såsom available, offline, away och do-not-disturb. Dessa tas vanligtvis i beaktande innan meddelanden skickas. Om en klient befinner sig i sitt tillstånd do-not-disturb, betyder det troligtvis att denne inte vill ha några meddelanden och skall då inte heller utsättas för sådana. Detta tillstånd kunde, i ett RPC-system, intas under själva beräkningen av en uppgift, som klienten fått. Självklart kan en klient inte ta emot något anrop då denne är inte är inloggad, men ifall ett anrop mot förmodan skickas sker ingen större skada än att anroparen får vänta på svaret tills mottagaren loggat in och är beredd att ta emot ett anrop. [Ada02] 8
9 4. Implementation 4.1 Beskrivning av systemet Som ett enkelt test av Jabber XML-RPC implementeras här ett litet system med två Jabber klienter, A och B, som loggar in till en lokal Jabber-server (körs på samma fysiska maskin). Klient A agerar XML-RPC klient och B XML-RPC server. A anropar B med ett XML-RPC anrop inbakat i ett meddelande (av typ message), där subject får vara XML- RPC och body innehåller XML-RPC delen. Efter att A skickat meddelandet blir den att vänta på svaret från B. När svaret anländer parsas svaret ut och skrivs ut på skärmen. Klient B börjar lyssna efter anrop direkt efter inloggningen. Då ett anrop anländer skickas XML-fragmentet i body-delen vidare till ett objekt av klassen XmlRpcServer, som i sin tur anropar den efterfrågade metoden. XmlRpcServern returnerar svaret och B skapar ett nytt meddelande, där subject sätts till XML-RPC response och body till svaret. Mottagaren av det nya meddelandet sätts till klient As id. 4.2 Jabber RPC servern Till servern behövs två klasser: huvudklassen som benämns JabberRPCServer samt en arbetarklass, AreaHandler, som tillhandahar den önskade metoden. I detta exempel skall arean av en cirkel beräknas och således tas ett värde på radien in och arean returneras. Både radien och arean är av datatypen double. Metoden som returnerar arean får heta circlearea: public class AreaHandler{ public AreaHandler(){ public static Double circlearea(double radius){ double value=(radius*radius*math.pi); return new Double(value); //returnerar ett objekt, d.v.s en Double. Själva serverklassen implementerar gränssnittet PacketListener och innehåller därmed metoderna start, receivepacket, sentpacket och sendfailed. De två sistnämnda är ointressanta i detta exempel och behandlas inte här. Däremot presenteras de första två längre fram i texten. Först kommer en lista över nödvändiga parametrar samt konstruktorn och main-metoden. 9
10 public class JabberRPCResponder implements PacketListener{ private String server = "localhost"; private String user = jrpcserver"; private String passwd = "jrpc"; private String resource = "rpc"; private XmlRpcServer responder; private ConnectionBean cbean; //testet körs på localhost //XmlRpcServer tar hand om det anlända anropet //ConnectionBean sköter uppkopplingen till Jabber-servern public JabberRPCResponder(){ responder = new XmlRpcServer(); responder.addhandler("area", new AreaHandler()); //en AreaHandler binds till strängen area public static void main(string[] args){ JabberRPCResponder server = new JabberRPCResponder(); try{ server.start(); catch(exception e){ System.out.println("Cannot start server: "+e.tostring()); Inloggningen till Jabber-servern sker i start-metoden public void start() throws Exception{ cbean = new ConnectionBean(); InetAddress addr; cbean.addpacketlistener(this); cbean.connect(addr=inetaddress.getbyname(server)); // InfoQueryBuilder används för att bygga ett IQ-element. InfoQueryBuilder iqb = new InfoQueryBuilder(); // IQAuthBuilder bygger ett IQ-element av typen authorization // vilket används för att logga in till Jabber-servern. IQAuthBuilder iqauthb = new IQAuthBuilder(); iqb.settype("set"); // inloggningsparametrarna sätts. iqauthb.setusername(user); iqauthb.setpassword(passwd); iqauthb.setresource(resource); // IQ-elementet får en extension. iqb.addextension(iqauthb.build()); // Ett IQ-meddelande skapas och sänds. InfoQuery iq = (InfoQuery)iqb.build(); cbean.send(iq); // Ett Presence-meddelande skapas och sänds. PresenceBuilder pb = new PresenceBuilder(); cbean.send(pb.build()); Metoden receivepacket följer näst: 10
11 public void receivedpacket(packetevent pe){ Packet pack = pe.getpacket(); System.out.println("RECV: " +pack.tostring()); // Behandlar bara paket av typen Message if(pack instanceof Message){ // Endast ifall subject stämmer processeras meddelandet if(((message)pack).getsubject().equals("xml-rpc")) { // Diverse information plockas ur meddelandet String request = ((Message)pack).getBody(); String id = ((Message)pack).getIdentifier(); JID from = ((Message)pack).getFromAddress(); // XML-RPC anropet transformeras till en BytArrayInputStream // pga a XmlRpcServern tar en sån som inputparameter. ByteArrayInputStream bis = new ByteArrayInputStream(request.getBytes()); // Anropet exekveras och resultatet lagras i en sträng. String result = new String(responder.execute(bis)); String response = result; // Innehålls definitionen tas bort så en sådan ju // redan finns för kommunikationsströmmen. int pos = result.lastindexof("?>"); if(pos>=0) response = result.substring(pos+2); else // Ett meddelande byggs MessageBuilder msgb = new MessageBuilder(); msgb.setsubject("xml-rpc response"); msgb.setbody(response); msgb.settoaddress(from); msgb.setidentifier(id); Message msg; try{ msg = (Message)msgb.build(); catch(instantiationexception ie){ System.out.println("Build failed: " +ie.tostring()); return; // Meddelandet sänds cbean.send(msg); //Should return a error message System.out.println("wrong type of message received!!!"); 4.3 Jabber RPC Klienten Jabber RPC klienten utgörs liksom servern av en Jabberklient och har därför till stor del liknande kodfragment. Vid inloggningen använder sig klienten av sina egna användarparametrar: private String server = "localhost"; private String user = jrpcklient"; private String passwd = "jrpc"; private String resource = "rpc"; 11
12 Början av start metoden ser också likadan ut, medan man i slutet skapar ett meddelande innehållande själva XML-RPC-anropet. För att underlätta konstruerandet av meddelandet används en hjälpklass vid namn PayloadBuilder (se författarens hemsida: rosnellm/jabberrpc). // Ett meddelande, innehållande metodanropet byggs MessageBuilder msgb = new MessageBuilder(); msgb.setsubject("xml-rpc"); // PayloadBuilder används för att bygga själva XML-RPC anropet PayloadBuilder plb = new PayloadBuilder(); plb.sethandler("area"); plb.setmethod("circlearea"); // Vi testar med radien = 10. plb.addparameter("double","10"); msgb.setbody(plb.build()); msgb.settoaddress(jid.fromstring(xmlrpcserver+"@"+server)); Message msg; try{ msg = (Message)msgb.build(); catch(instantiationexception ie){ System.out.println("Build failed: " +ie.tostring()); return; cbean.send(msg); Metoden receivepacket i klienten är likaså mycket lik den i servern, med den skillnaden att det mottagna meddelandet här parsas för att få ut svaret på metodanropet. Parsandet sker med hjälp av klassen PayloadExtractor. Metoden receivepacket ser ut på följande sätt: public void receivedpacket(packetevent pe){ Packet pack = pe.getpacket(); // Behandlar bara paket av typen Message if(pack instanceof Message){ // Kollar så att subject stämmer if(((message)pack).getsubject().equals("xml-rpc response")) { // XML-RPC svaret plockas ur body och parsas av PayloadExtractor String response = ((Message)pack).getBody(); PayloadExtractor ple = new PayloadExtractor(); ple.parse(response); System.out.println("RESPONSE: "+ple.getresponse()); Vid körningen av systemet skall först och främst Jabber-servern vara igång. Sen startas JabberRPCResponder (RPC servern) och till sist JabberRPCRequester (RPC klienten). I detta fall kommer följande att skrivas ut på skärmen: RESPONSE: , då det är 12
13 arean av en cirkel med radien 10. Koden för hjälpklasserna samt de presenterade klasserna i sin helhet finns på författarens hemsida. 5. Sammanfattning I denna uppsats har gåtts igenom de steg som krävs för att bygga ett RPC systen över Jabber. De teknologier som använts har alla varit välkända och bra dokumenterade, så utmaningen låg i att kombinera byggstenarna på ett fiffigt sätt. Resultatet blev en lättförståelig distribuerad applikation, där styrkan ligger i det enkla sättet att kommunicera, d.v.s. genom meddelanden. Dessutom finns öppna Jabber-servrar på många ställen i världen vilket gör globala distribuerade system enkla att implementera. En av nackdelarna, jämfört med ett system implementerat direkt över socketar, är att kommunikationen blir mycket långsammare. Detta har dock inte så stor betydelse om applikationen är mera beräknings- än kommunikationsintensiv. Dessutom har Jabber meddelanden lätt att ta sig fram genom t.ex. brandmurar och därför kräver ett system som kommunicerar via Jabber knappt någon konfiguration av andra program. Slutsatsen är att man gått och väl kan använda sig av XML-RPC över Jabber ifall applikationen som man skall göra inte förutsätter snabb kommunikation eller understöd av datatyper som XML- RPC inte understöder. Referenser Böcker: [Ada02] Adams, DJ (2002) Programming Jabber, Extending XML Messaging. USA: O Reilly. [StL01] St.Laurent, Simon, Joe Johnston, Edd Dumbill (2001) Programming Web Services with XML-RPC. USA: O Reilly. Artiklar: [All03] Allman, Mark (2003) An Evaluation of XML-RPC ACM SIGMETRICS Performance Evaluation Review 30 (4), s
14 [Suo04] Suonveri, Mika (2004) Metaspråket XML. Department of Computer Science Åbo Akademi University. ( Webmaterial: [R1] XML-RPC for Newbies: [R2] HTTP Hypertext Transfer Protocol Overview: [R3] DCOM, CORBA, Java-RMI A step by step comparison by Gopalan Suresh Raj: [R4] Web Naming and Addressing Overview(URIs, URLs ): [R5] Jabber Software Foundation: [R6] Extensible Messaging and Presence Protocol (XMPP): [R7] Developer s introduction to JAX-RPC, Part 1: Learn the ins and outs of the JAX- RPC typemapping system: Appendix A: XML-RPC understöder följande datatyper: Type Int String Boolean Double DateTime.iso8601 base64 Array A signed, 32-bit integer. Properties An ASCII string, which may contain NULL bytes. (Actually, several XML- RPC implementations support Unicode, thanks to the underlying features of XML.) Either true or false. A double-precision floating point number. (Accuracy may be limited in some implementations.) A date and time. Unfortunately, since XML-RPC forbids the use of timezones, this is very nearly useless. Raw binary data of any length; encoded using Base64 on the wire. Very useful. (Some implementations don't like to receive zero bytes of data, though.) An one-dimensional array of values. Individual values may be of any type. 14
15 Struct A collection of key-value pairs. The keys are strings; the values may be of any type. Appendix B: Följande tre element utgör de meddelanden som man kan skicka över protokollet XMPP: Element Tag Types Message <message/> normal, chat, groupchat, headline, error IQ <iq/> get, set, result, error Presence <presence/> Available, unavailable, subscribe, subscribed, unsubscribe, unsubscribed, error 15
Distribuerade affärssystem
Distribuerade affärssystem Kursens mål Bygga upp, strukturera och programmera distribuerade system med en flerskiktsarkitektur Beskriva och förklara teorier och uttryck som används inom affärskritiska
Laboration 1 XML-RPC
UMEÅ UNIVERSITET 22 september 2003 Institutionen för datavetenskap Laboration 1 XML-RPC David Granström http://www.cs.umu.se/ ei01dgm/rapport_lab1.pdf kommentarer Handledare: Magnus
Att skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl
Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
WWW. Exempel på klientsidan. Överföring av en html-fil. Snyggare variant. Verkligt format. Meddelandeformat för begäran HTTP
Exempel på klientsidan WWW Javascript-interpretator XML-interpretator HTML-interpretator Java-interpretator CSS-interpretator Använder TCP Kan återanvända uppkoppling Inga tillstånd hos servern OS API
Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.
Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Kort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
Christer Scheja TAC AB
Byggnadsautomation för ingenjörer Byggnadsautomation för ingenjörer VVS-tekniska föreningen, Nordbygg 2004 Christer Scheja TAC AB resentation, No 1 Internet/Intranet Ihopkopplade datornät ingen ägare Internet
Web Services. Cognitude 1
Web Services 1 Web Services Hur ska tillämpningar integreras? Hur ska tillämpningar integreras (via nätet ) för att erbjuda tjänster åtkomliga på nätet? SVAR: Web Services (Enligt Microsoft, Sun, IBM etc.)
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,
Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011
Webbteknik II Föreläsning 4 Watching the river flow Web Service XML-RPC, SOAP, WSDL, UDDI HTTP Request, Response, Headers, Cache, Persistant Connection REST Hype or the golden way? Web Service / Webbtjänst
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna
Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
E12 "Evil is going on"
E12 "Evil is going on" Föreläsning 12, HT2014 AJAX Kurs: 1dv403 Webbteknik I Johan Leitet E12 Evil is going on Dagens agenda AJAX XMLHttpRequest-objektet JSON Vad är AJAX? Asynchronous JavaScript and XML
Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.
Objektorienterad programmering E Telefonboken, än en gång Föreläsning 5 Wrapper classes Exempel, histogram. Inldening om undantag. Mer om klassen Påminnelse Vår senaste version bestod av två klasser, bägge
Introduktion till integrering av Schenkers e-tjänster. Version 2.0
Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004
Lösningsförslag Programmeringsmetodik, KV: Java och OOP 17 januari 2004 Examinator: Johan Karlsson Skrivtid: 9-15 Hjälpmedel: En av följande böcker: Barnes & Kölling: Objects First With Java a practical
Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Förra föreläsningen: Olika nivåer av meddelanden. Från oblockad sändning till. RPC: Parameterpassning, registrering, felhantering, säkerhet, kompilering ONC RPC: XDR, portmapper Brandväggar, dynamisk brandväggskonfigurering,
public och private Obs: private inte skyddar mot access från andra objekt i samma klass.
public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private
Services + REST och OAuth
Services + REST och OAuth Syftet med Services Skapa ett Drupal API för att exponera webb- API:er. Officiella versionen - Create a unified Drupal API for web services to be exposed in a variety of different
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
Tentamen Nätverksprogrammering Lösningsförslag
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2012 05 28, 8.00 13.00 Del 1 1. Time To Live (TTL) anger hur många routrar ett multicastpaket
DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (8) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt namn, personnummer och e-postadress på försättsbladet. Skriv rent dina svar.
Konstruktion av klasser med klasser
Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut
Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at
Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl 14.00 17.00 Hjälpmedel: En Javabok. För betyget godkänt krävs att a- eller b-delen av varje fråga (uppgift 1 4) samt
Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private
Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
(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
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.
Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär
Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013
DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 Innehåll Trådar i Java swing- klassen Timer Klient-Server-program Trådar Tråd = enkel process Ett program kan ha flera trådar, flera
TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
GATEWAY TJÄNSTEBESKRIVNING. Webbservice. WSDL-fil. Skicka meddelanden. SMS och FastnätsSMS
GATEWAY TJÄNSTEBESKRIVNING Tjänsten Messit Gateway består av ett gränssnitt som enkelt kan implementeras i en egen applikation. Det enda som krävs för att använda Messit Gateway är att applikationen som
Tentamen Nätverksprogrammering Lösningsförslag
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2018 03 14, 8.00 13.00 Del 1 1. Applikationslagret levererar data mellan applikationer och till
Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.
Informationsinfrastruktur 7.5 hp Mattias Nordlindh Inledning Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer. Dokumentet består av
Polymorfi. Objektorienterad och komponentbaserad programmering
Polymorfi Objektorienterad och komponentbaserad programmering Polymorfi, mångtydighet Polymorfi innebär att en viss konstruktion kan exekveras på olika sätt Överlagring av metoder ger ett polymorft beteende
Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016
Objektorienterad Programkonstruktion Föreläsning 11 6 dec 2016 Föreläsningen 13/12 Halvtidsrepetition Maila frågor som ni vill att jag tar upp! ccs@kth.se Processer Vad vi i dagligt tal menar när vi pratar
F4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.
Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i
Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck
Betrakta följande uttryck a +(b + c) d + e (f + g h) Parsing med Recursive Descent, Avbildningsklasser Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 22 november 2010 Beräkning med regler: multiplikation
Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Webbservrar, severskript & webbproduktion
Webbprogrammering Webbservrar, severskript & webbproduktion 1 Vad är en webbserver En webbserver är en tjänst som lyssnar på port 80. Den hanterar tillgång till filer och kataloger genom att kommunicera
Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-03-19 Skrivtid: 14:00 19:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander
F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder
Föreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe
Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för I1, K2, L1, M1, Media1 och T1. Tentamen (1p) 6 april 2002, kl 14.00 17.00 Hjälpmedel: En javabok(det blå javahäftet som ingår i kursbunten räknas
TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014
TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt. Använd
Distribuerade System, HT03
UMEÅ UNIVERSITET 21 oktober 2003 Institutionen för Datavetenskap Laborationsrapport Laboration Middleware Distribuerade System, HT03 Jini Namn: Anders Holm, c00asm@cs.umu.se Kjell Johansson, c00kjn@cs.umu.se
Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output
Programmering hh.se/db2004 Föreläsning 5: Fält samt Input/Output Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Lite mer om Javas stöd för fält Hur många element har ett fält?
2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]
Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B2 och V1. Tentamen (1p) 12 januari 2002, kl 14.00 17.00 Hjälpmedel: En javabok(det blå javahäftet som ingår i kursbunten räknas som en javabok.
2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning
2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten
IT för personligt arbete F2
IT för personligt arbete F2 Nätverk och Kommunikation DSV Peter Mozelius Kommunikation i nätverk The Network is the Computer Allt fler datorer är sammankopplade i olika typer av nätverk En dators funktionalitet
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt
Föreläsning 3: Booleans, if, switch
TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt
Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2014-06-12 Skrivtid: 1400-1900 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
Datasäkerhet och integritet
Chapter 4 module A Networking Concepts OSI-modellen TCP/IP This module is a refresher on networking concepts, which are important in information security A Simple Home Network 2 Unshielded Twisted Pair
Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015
Objektorienterad Programkonstruktion Föreläsning 10 7 dec 2015 Nätverksprotokoll - OSI Open Systems Interconnection model (ISO standard) definierar 7 lager för nätverkskommunikation: 1 - Physical Layer:
TDDD78 Viktiga begrepp, del 2
jonas.kvarnstrom@liu.se 2015 TDDD78 Viktiga begrepp, del 2 Identitet och likhet Är likhet och identitet samma sak? Oj, vi har samma kläder på oss idag! Nej, men likadana! Besserwisser 3 Detta är två rutor
Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java
DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/4 2014 Innehåll Kort om Javas Exceptions Trådar i Java swing- klassen Timer Klient-Server-program Javas Exceptions Checked måste hanteras,
Generiska konstruktioner. Kursbokens kapitel 13
Generiska konstruktioner Kursbokens kapitel 13 1 Vad är en generisk konstruktion? Generisk står för; allmän eller generell En generisk konstruktion kan användas för olika typer av data Med hjälp av templates
Tentamen ID1004 Objektorienterad programmering May 29, 2012
Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga
Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016
Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar
Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.
Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra
Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler
21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter
ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
Grundläggande datavetenskap, 4p
Grundläggande datavetenskap, 4p Kapitel 4 Nätverk och Internet Utgående från boken Computer Science av: J. Glenn Brookshear 2004-11-23 IT och medier 1 Innehåll Nätverk Benämningar Topologier Sammankoppling
DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU
DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU lösningsförslag till tentamen 2017-06-09 Tid: 8:30-12:30. Plats: SB. Ansvarig lärare: Fredrik Lindblad,
Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2012-03-14 Skrivtid: 0800-1100 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till
Business to business (B2B) communication - Integrering av system
Business to business (B2B) communication - Integrering av system Jonas Liinamaa 20 november 2003 Department of Computer Science Åbo Akademi University, FIN-20520 Åbo, Finland e-mail: jliinama@abo. URL:
TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).
1 (7) TENTAMEN: Objektorienterad programmering Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad. Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen. Ordna bladen i uppgiftsordning.
Länkade strukturer. (del 2)
Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion
Tentamen ID1004 Objektorienterad programmering April 7, 2015
Ordinarie tentamen för ID1004 Objektorienterad programmering, 7 april 2015 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av en obligatorisk del och
Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)
Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet
Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner
Programmeringsteknik och Matlab Övning 3 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:
Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte
Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag
Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har
UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.
Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language
Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag
Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-6, TDA540 Dag: 207-0-24, Tid: 4.00-.00 Uppgift a) En abstrakt klass kan inte instansieras,
TDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om