Next previous Innehåll Smalltalk En introduktion till språket Smalltalk Historik, syntax, meddelanden, grundläggande klasser, styrstrukturer Klassdefinition.

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
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.
Klasser och objekt.
Funktioner och programorganisation
Leif Håkansson’s Square Dancer Rotation
Programmeringsteknik
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Klassarv och inkapsling
Next previous Refactoring och lite mönster kodade i Java Innehåll Vad är refactoring? Ett större refactoringexempel Några mönster kodade i Java OOMPA 2000.
OOP Objekt-orienterad programmering
Metoder i java Det finns två typer av metoder i java
Föreläsning 4 Python: mera om funktioner och parametrar
Arv.
Inkapsling.
Objektorienterad tänkande
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Att programmera i språket Java
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Next previous Lite mer om CGI-programmering Innehåll Vad är CGI? Vad är Forms? Vad är Perl? Forms, CGI och Perl Internetprogrammering F 14 Läs också: Kursboken.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
V E R S I O N N R 2. 0 T A V E L I D É E R I M I L J Ö.
Alice in Action with Java
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
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.
Programmering B PHP Lektion 2
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
Föreläsning 2, Kapitel 2 Att förstå klassdefinitioner Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Klasser och objekt Klasser, objekt och instansvariabler
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.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Objektorienterad Modellering Programmering och Analys
TÄNK PÅ ETT HELTAL MELLAN 1-50
Programmeringsteknik för Media1 & K1
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Servicekunskap Hur vill du jobba med boken?
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
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.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
1 Logging and monitoring of TCP traffic in SSH tunnels Masters thesis Anton Persson.
Java paket och jar-filer
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
INTRODUKTION TILL PROGRAMMERING
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.
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
1 Föreläsning 8 Mer om klasser och objektorientering.
Föreläsning 2 programmeringsteknik och Matlab 2D1312/ 2D1305
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Presentationens avskrift:

next previous Innehåll Smalltalk En introduktion till språket Smalltalk Historik, syntax, meddelanden, grundläggande klasser, styrstrukturer Klassdefinition (med instans- och klassvariabler) Metoder ”konstruktörer” Kort-kort om Smalltalk (nio sidor som sammanfattar Smalltalk, i slutet av anteckningarna) OOMPA 2D1359 & 2D1360 Föreläsning 16: Smalltalk

previous next 2 Smalltalk\VisualWorks Historik Arbetet med Smalltalk började på Xerox PARC i början av 70 - talet. (3000 rader BASIC 1972) Skapade begreppet objektorienterat –Mycket av dagens terminologi kommer härifrån –Även Javas rekommenderade regler för namngivning härifrån Avsikten var att bygga ett kraftfullt informationssystem som skulle kunna växa och förändras i takt med med användarens idéer och önskemål I gruppen eller intilligande grupper var man också först med –Fönstersystem med bitmappade displayer, pop-up-menyer, mm Influerade Apples Macintosh –Ethernet –Postscript Smalltalk, eller folk som jobbar med Smalltalk, har också varit dominerande i: –Designmönster –XP –Teorier och mönster för gränssnittskonstruktion

previous next 3 Smalltalk\VisualWorks Smalltalk var en vision Man valde två utgångspunkter för att realisera denna idé: –ett beskrivnigsspråk (programspråk) som kan användas för att beskriva användarens mentala bild av tillämpningen för datorn –ett interaktionspråk som används för att beskriva gränssnittet mellan användare och dator

previous next 4 Smalltalk\VisualWorks I Smalltalk är allt objekt Smalltalk är helt objektorienterat och uppbyggt kring de grundläggande begreppen: objekt, instans, meddelande, klass och metod Allt i Smalltalk är objekt: ex. Tal, strängar, grafik, fönster, kompilator, klasser En operation (metod) utförs genom att ett objekt (mottagaren) får ett meddelande. Objektet själv avgör vad som skall hända objekt görDetHär mottagare meddelande Syntax: Syntax:

previous next 5 Smalltalk\VisualWorks I VisualWorks använder man verktyg Browser för att koda Workspace för att testa GUI-builder för att skriva delar av interaktiva grafiska tillämpningar

previous next 6 Smalltalk\VisualWorks Definiera klass (VW3) En klass skapas genom att ett meddelande till en existerande klass Object subclass: #MyClass instanceVariableNames: 'ivar1 ivar2' classVariableNames: 'ClassVar1' poolDictionaries: '' category: 'MyCategory' Där man anger den nya subklassens namn, instansvariabler, klassvariabler och en del annat existerande klass Blir superklass Namn på den nya (sub-) klassen Fungerar i VW5 också men nu finns ny mall

previous next 7 Smalltalk\VisualWorks Definiera klass (VW5) En klass skapas genom att ett meddelande till en namnrymd Smalltalk defineClass: #MyClass superclass: #{Object} indexedType: #none private: false instanceVariableNames: ‘ivar1 ivar2' classInstanceVariableNames: '' imports: '' category: ‘MyCategory‘ Klassvariabler heter nu shared variables och deklareras på särskilt sätt namnrymd Namn på den nya (sub-) klassen existerande klass Mer om Browsrar och hur man kodar: Mer om Browsrar och hur man kodar:

previous next 8 Smalltalk\VisualWorks Exempel: klassdefinition MyCircle Vi definierar en cirkel med centrum i center (en instans av Point ) och radien radius. Smalltalk defineClass: #MyCircle superclass: #{Core.Object} indexedType: #none private: false instanceVariableNames: 'center radius ' classInstanceVariableNames: '' imports: '' category: 'OOMPA' Object subclass: #MyCircle instanceVariableNames: 'center radius ' classVariableNames: '' poolDictionaries: '' category: 'OOMPA' VW3 VW5

previous next 9 Smalltalk\VisualWorks Instansiera klass Förutsättningar –Vi har definierat en klass MyCircle Problem –Hur skapar vi en isntans av MyCircle ? Lösning –Skapa instanser av klassen med hjälp av meddelandet new MyCircle new Klass Meddelande

previous next 10 Smalltalk\VisualWorks Temporär variabel Problem –Hur kan jag referera till en instans? Lösning –Använd temporär variabel En temporär variabel deklareras inom ett par av vertikala "streck". En variabel deklareras utan typinformation Vid deklaration av flera variabler åtskilj dem med blanktecken | c1 c2 | c1 := MyCircle new. c2 := MyCircle new. Deklaration av två temporära variabler Två nya instanser skapas Tilldelning (med :=)

previous next 11 Smalltalk\VisualWorks Ändra en instansvariabels värde Förutsättningar –Vi har deklarerat en klass med instansvariabler men kan varken läsa eller ändra deras värden Problem –Hur kan jag ändra en instansvariabel? Lösning –Skriv en mutator, dvs en metod som förändrar Exempel: metod för att ändra radien radius: newRadius radius := newRadius formell parameter ändra instansvariabeln Metodnamn

previous next 12 Smalltalk\VisualWorks Läsa instansvariabel Förutsättningar –I Smalltalk kommer man inte åt attribut i ett objekt om inte klassen erbjuder sätt att göra detta (inkapsling). Problem –Hur kommer jag åt en instansvariabel? Lösning –Skriv en inspektor. För att explicit returnera något från en metod används "stiliserad uppåtpil" (^). Exempel: metod för att läsa radien radius ^radius

previous next 13 Smalltalk\VisualWorks Meddelande Problem –Hur skickar jag meddelanden till objekt, dvs anropar en av dess metoder? Lösning –Meddelanden har samma namn som metoderna | c1 | c1 := MyCircle new. "ändra radie" c1 radius: 10. "vad är radien?" c1 radius

previous next 14 Smalltalk\VisualWorks Andra metoder än inspektorer Problem –Hur skriver jag en metod som använder en instansvariabel för att beräkna något? Lösning –Instansvariabeln kan alltid refereras innifrån den aktuella instansen Exempel: omkrets circumference ^2 * 3.14 * radius Testa c1 circumference

previous next 15 Smalltalk\VisualWorks Anropa annan metod i klassen Förutsättningar –I det förra exemplet använde vi instansvariabeln radius direkt trots att det fanns en inspektor Problem –Hur använder vi en annan metod i objektet själv? Lösning –Pseudovariabeln self refererar till det aktuella objektet. För att skicka meddelanden till det aktuella objektet utnyttjas detta. circumference ^2 * 3.14 * self radius

previous next 16 Smalltalk\VisualWorks Reflektion: inspektorer Fördelar med att använda inspektorer istället för instansvariabler direkt –andra metoder blir mindre bereonde av hur radien verkligen lagras. Om lagring eller andra detaljer ändras (tex om radien lagras i en databas eller i en vektor) behöver endast mutatorn förändras –förändringar i subklasser blir enklare Det ovan beskrivna gäller också mutatorer!

previous next 17 Smalltalk\VisualWorks Initiala värden för objekt Förutsättningar –Hittills har vi använt meddelandet new för att konstruera instanser och accessmetoder för att ändra och läsa attribut. –Alla variabler har värdet nil om inget annat angivits Problem –Om vi använder meddelandet circumference utan att ange värde för radius får vi ett felavbrott. –Hur kan vi ange skönsvärden (defaultvärden) för instanvariablerna Lösning –Definiera en speciell instansmetod som ansätter defaultvärden

previous next 18 Smalltalk\VisualWorks Forts (initieringsmetod) Exempel –Initieringsmetod initialize self center: Point zero. self radius: 1. –Testa | c | c := MyCircle new. c initialize. c circumference

previous next 19 Smalltalk\VisualWorks Forts (ändra konstruktor) Förutsättningar –Programmeraren måste fortfarande komma ihåg att initiera Problem –Hur kan vi tvinga fram en initiering av skönsvärdena? Lösning –Definiera om konstruktorn new new | newCircle | newCircle := self basicNew. newCircle center: newCircle radius: 1. ^newCircle new ^self basicNew initialize

previous next 20 Smalltalk\VisualWorks Vi testar MyCircle c1 := MyCircle new. c1 circumference Fungerar utan felavbrott och med förväntat resultat

previous next 21 Smalltalk\VisualWorks VisualWorks Förutsättningar –Vi vet hur vi konstruerar Smalltalkklasser med klass- och instansmetoder. Problem –Hur implementerar vi och testar det hela i VisualWorks?

previous next 22 Smalltalk\VisualWorks Arkitektur VisualWorks, VM, image och filer

previous next 23 Smalltalk\VisualWorks …Forts Sammanfattning system –Image den omgivning med fönster och kod "vi kör i" namnet slutar på ".im", tex minImage.im –Källkod systemkällkod, en fil i systemets katalog egen kod + log, i en fil med den kod vi skrivit eller ändrat samt en log av vad vi gjort. Namnet slutar på ".cha"´, tex minImage.cha. –Virtuell maskin (VM) Den enda plattformsberoende delen som översätter plattformsoberoende beskrivningar till aktuell plattform, minneshantering och tar hand om objektens "liv och död" En VM per plattform (en för Solaris 5, en för Windows, en för Linux, en för Mac, osv)

previous next 24 Smalltalk\VisualWorks För- och nackdelar med en VM Fördelar –Kod och image flyttbar mellan olika plattformar –Koden kan skrivas på en hög platformsoberoende nivå –Koden blir kompakt Nackdelar –Långsammare exekvering än om koden optimeras för aktuell arkitektur –Svårt att konstruera speciellt gränssnitt på ett helt plattformsoberoende sätt (fast det är ju egentligen inget VM- problem, utan mer generellt) –Vissa typer av program kräver plattformsspecifika "finesser"

previous next 25 Smalltalk\VisualWorks Forts Överbryggande av vissa nackdelar –Just in time compiling (JIT) dvs en översättning till riktig binärkod just före exekveringen –VisualWorks gör på detta sätt Smalltalk har gjort det sedan 1983 –Dom flesta Java-VM använder också JIT –Anropa kod skriven i andra språk I VW kan man dynamiskt länka in C-kod –Olika versioner av gränssnitt I VW kan man känna av vilken plattform som körs och göra anpassningar (på hög nivå!) till detta. Alla plattformar är “emulerade” via lättviktiga gränssnitt (vilket Java också börjat göra i swing…)

previous next 26 Smalltalk\VisualWorks Starta VisualWorks Förutsättningar –Vi kör under UNIX (i terminalsalarna) Hur startar jag VisualWorks? Lösning –Explicit angivande av virtuell maskin och image –/pkg/visual/5i.4nc/bin/solaris/visual /pkg/visual/5i.4nc/image/visualnc.im –Använd module add först –module add visual/5i.4nc –visual /pkg/visual/5i.4nc/image/visualnc.im På PC och MAC då? –När det hela är installerat startas en image via dubbelklick

previous next 27 Smalltalk\VisualWorks Konstruera klass i VW Vi har startat VisualWorks Hur konstruerar vi ny klass? Enklast använda Browsern

previous next 28 Smalltalk\VisualWorks Pröva kod Hur prövar vi kod och nyskapade klasser? Använd ett Workspace

previous next 29 Smalltalk\VisualWorks Spara kod Hur sparar jag min kod? Gör file out –Från Browsern Eller lite mer avancerat Eller lite mer avancerat

previous next 30 Smalltalk\VisualWorks Läsa in kod Hur läser jag in kod som finns på fil? Lösning –Använd en Fillista –eller explicit meddelandet fileIn ( ( ( (

previous next 31 Smalltalk\VisualWorks Spara image Dagen är slut vi vill gå hem och helst vill vi kunna forsätta från exakt samma utgångsläge (med öppna fönster osv) imorgon Hur sparar jag mitt arbete inklusive omgivning? Spara image –Från Launchern

previous next 32 Smalltalk\VisualWorks Starta egen image Hur startar jag en egen image igen? Lösning (se också OH sid 26)26 –(UNIX) visual minImage.im –(MAC, PC) dubbeklicka på ikonen

previous next 33 Smalltalk\VisualWorks Fördefinierade klasser Hur använder jag fördefinierade klasser och metoder? Sök reda på metoder i systemet –Titta vad du kan göra –Testa i tex ett Workspace

previous next 34 Smalltalk\VisualWorks SUnit Vi testar SUnit –Vi konstruerar en klass BankAccount –Vi gör samma exampel som på föreläsning 2 Dvs Java-koden som du hittar i katalogen /info/oompa01/SOURCE/EXAMPLES/Lecture2XP/oompaf2 –Fast vi använder SUnit och skriver det hela i Smalltalk den här gången

previous next 35 Smalltalk\VisualWorks Vi gör lab 2 också Dvs vi gör så mycket av lab 2, designmönsterlaborationen, som vi hinner Vi använder SUnit för att skriva tester Idag kör vi efter principen ”Det enklaste som fungerar” och snyggar till och gör refactoring på vissa delar vid nästa föreläsning om VisualWorks\Smalltalk Koden vi skriver kommer läggas i katalogen: /info/oompa01/SOURCE/Smalltalk