1. Skriv programmet Fetkoll som läser igenom valfri webbsida och skriver ut alla ord och fraser som står med fetstil. I HTML anges det med starttaggen.

Slides:



Advertisements
Liknande presentationer
Snabbguide och tips.
Advertisements

Avlusning Debugger (”avlusare”) Breakpoints Watch.
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Programmeringsteknik
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 3 Johan Hjerling
Fortsättningskurs i Programmering lektion 6
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Metoder i java Det finns två typer av metoder i java
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Att programmera i språket Java
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Klasser och objekt Klasser, objekt och instansvariabler
int res2=Math.max(tal1,tal2);
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmeringsteknik för Media1 & K1
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Jonny Karlsson GRUNDKURS I PROGRAMMERING MED JAVA Föreläsning 9 ( ) INNEHÅLL: -Tabeller av klassobjekt -Användning av Java API specifikationen.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Java paket och jar-filer
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
TILLÄMPAD DATALOGI (TILDA) Övning 3
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 Klasser Och Objekt.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
INTRODUKTION TILL PROGRAMMERING
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
Programmeringsteknik för K och Media
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Presentationens avskrift:

1. Skriv programmet Fetkoll som läser igenom valfri webbsida och skriver ut alla ord och fraser som står med fetstil. I HTML anges det med starttaggen och sluttaggen. (Andvändbart i lab6)

import javax.swing.text.html.*; import java.net.*; import java.io.*; public class Fetkoll { public static void main(String[] args) { String webbsida=" if (args.length>0) { webbsida=args[0]; } try { InputStream in=new URL(webbsida).openConnection().getInputStream(); HTMLDocument doc=new HTMLDocument(); InputStreamReader reader=new InputStreamReader(in); new HTMLEditorKit().read(reader, doc, 0); HTMLDocument.Iterator it=doc.getIterator(HTML.Tag.B); while (it.isValid()) { int start=it.getStartOffset(); int slut=it.getEndOffset(); System.out.println(doc.getText(start, slut-start)); it.next(); } } catch (Exception e) { System.out.println("Kan inte koppla mej till "+webbsida); }

Uppg 2. Du ska utveckla ett program för den som vill ha full koll på sina klasskamrater. För varje klasskamrat har man förstås namn och adress. För kamraterna i överklassen noteras dessutom Rolexmodell och yachtsegelyta; för kamraterna i underklassen noteras om dom knarkar, super eller svär. Objektmodellera med namn och typer på metoder och parametrar och med angivande av eventuella static, public, private osv. I modellen ska en underklass heta Överklass.

Klassdiagram

3. Ditt program är klart men några problem kvarstår. Segelyta anges ibland i kvadratmeter, ibland i kvadratfot. För att undvika problem vill du göra segelytan abstrakt. Vad innebär det? (3p) (Visa på tavlan.) Kompilatorn klagar på en sats i följande avsnitt av Underklass. Vilken och varför? (2p) boolean knarkar(){return knarkare;} boolean super(){return (drinkare==true);} boolean svär(){if(svärare) return true; return false;} Du skulle vilja göra en applet av programmet men anar klagomål från Datainspektionen. På vilka punkter? Föreslå åtgärd! (3p)

4. Ditt klasskamratprogram blev en sådan framgång att du nu tänker sätta upp en webbplats för klasskamrater av alla slag i hela landet. Alla ska kunna lägga in sin egen klass i en stor databas, men för att det ska fungera tänker du bara lägga in XML-filer med av dej specificerade taggar. Föreslå taggar och attribut om man vill ha med uppgifter av följande typ: Årskurs F-59 på KTH Andersson, Eva, f , barn Bo 1965, Åsa 1968, Pia Bengtsson, Jan, f , d , barn Jon Eriksson, Henrik, f , barn Viggo 1964, Kimmo 1967, Jonna Skriv början på XML-filen så långt som exemplet går.

XML – eXtensible Markup Language - - -

5. Din kamratwebbsajt blev en sådan dundersuccé att KTH vill ha upp ett kamratträd på webben, ett JTree där gamlingar ska kunna klicka på KTH-roten och få fram sektionerna, på sin sektion och få fram årskurserna och så vidare. Du måste nu läsa en jättestor XML-fil och bygga upp detta träd från roten. Till din hjälp har du metoder av det slag som finns i xml.SAX eller i HTML.Document, dvs du itererar automatiskt över starttaggarna och kan avläsa värdet på attributen och eventuell text mellan start och sluttagg. Skriv helst ingen javakod men beskriv i ord hur du skulle göra, till exempel "...och så skapar jag ett nytt barn till noden och lägger in namnet där och så...".

Man skapar en rotnod med en sats av typen root = new DefaultMutableTreeNode("KTH") och sedan börjar man parsa xml-filen. Varje gång man stöter på starttaggen klasskamrater läser man av attributet skola och kollar att det har värdet KTH. I så fall skapar man en ny nod med det namn som attributet klass och adderar den som barn till rotnoden. När man stöter på starttaggen kamrat skapar man en ny nod och adderar den som barn till aktuell klassnod och när man hittar starttaggen barn skapar man en ny nod och adderar den som barn till aktuell kamratnod. På så sätt skapas ett träd där man kan klicka sej ner till Viggo.

Noderna vi talat om tillhör datamodellen men till varje nod hör också ett grafiskt objekt, till exempel en mappsymbol med namn på. När rotnoden skapades skickade vi med detta namn och det gjorde vi också för klassnoden. Men kamratnoder och barnnoder har så mycket information att den inte får plats på mappikonen. Man får skicka med den som ett informationsobjekt (designmönstret State), alltså till exempel new DefaultMutableTreeNode(new Barndata("Viggo",1964)) Objektet har en toString() som bestämmer vad som ska stå på mappikonen. På samma sätt gör man med kamratnoderna. Den fullständiga informationen kan till exempel komma upp i en JOptionPane om man högerklickar på en kamrat eller ett barn. (Detta används i lab 4)

6. Grattis! Din kamratwebbsajt är nu bland dom tio populäraste. Trycket är stort på att den ska byggas ut med en tjattfunktion. Kraven är följande: Inläggen ska krypteras så att endast klasskamraterna kan läsa dom. Den som läser ett inlägg ska kunna vara säker på vem som skrivit det. Om skrivaren så anger ska endast en viss klasskamrat kunna läsa. Beskriv i ord hur detta ska kunna fungera. Du kan anta att alla som vill vara med på egen hand skaffar sej PGP-nyckel.

Om alla klasskamrater ska kunna läsa inläggen måste dom vara lösenordskrypterade med ett lösenord som alla klasskamrater känner till. Antingen kan ett program slumpa fram ett lösenord för varje klass eller också kan klassens ledargestalt bestämma ett roligt lösenord. Detta skickas till alla klasskamrater, krypterat med mottagarens publika nyckel. Om man ska kunna vara säker på vem som skrivit ett inlägg måste det ha signerats med avsändarens hemliga nyckel. Men det duger inte att kryptera orden "Morsning! /Hempa" och lägga till sist i filen - då kan ju en skurk lägga detta sist i vilken fil som helst. Vid PGP-signering hashas hela inlägget ihop till ett tjugosiffrigt tal och det är detta tal som krypteras och läggs sist. Mottagaren dekrypterar det med avsändarens publika nyckel och kollar att det blir det tal man får när man hashar inlägget. Om endast en viss klasskamrat ska kunna läsa måste inlägget vara krypterat med dennes publika nyckel. Tjattprogrammet kan göra det automatiskt om den som skriver begär det. Om det är ett mycket långt inlägg, t ex en bild, kan det ta för lång tid med denna typ av kryptering och då är det bättre med lösenordskryptering där lösenordet skickas över separat och krypterat med publika nyckeln.