Systembeskrivning DRABBNING
|
|
- Martin Mattsson
- för 9 år sedan
- Visningar:
Transkript
1 Projekt: Drabbning Projekthemsida: Kurskod: 2D1362 Kursnamn: Programutvecklingsprojekt med mjukvarukonstruktion Uppdragsgivare: Pelle Mårtenson Systembeskrivning DRABBNING Projektmedlemmar: Johan Boström (projektledare), Linnea Drewitz, Frida Hjalmarsson, Pontus Ilbring, Borna Safai, Fredrik Gustavsson, Mattias Mårtensson, Jonas Wiklund,
2 Innehållsförteckning 1 Översikt Inledning GUI Logic Game Proxy Cache Klassbeskrivning Drabbning Funktioner Chat, package GUI Instansvariabler Funktioner ConnectGUI, package GUI Instansvariabler Funktioner Control, package GUI Instansvariabler Funktioner Controller, package GUI Instansvariabler Funktioner GUIBoard, package GUI Instansvariabler Funktioner Left, package GUI Instansvariabler Funktioner MainGUI, package GUI Instansvariabler Funktioner Right, package GUI Instansvariabler Funktioner Square, package GUI Instansvariabler Funktioner Status, package GUI Instansvariabler Funktioner Board, package Model Konstanter Instansvariabler Funktioner Cache, package Model Konstanter Instansvariabler
3 Funktioner CacheSquare, package Model Instansvariabler Coord, package Model Instansvariabler Funktioner Game, package Model Konstanter Instansvariabler Funktioner GameState, package Model Konstanter Instansvariabler Funktioner Logic, package Model Konstanter Instansvariabler Funktioner MapDefinition, package Model Instansvariabler Funktioner Move, package Model Instansvariabler Funktioner Piece, package Model Instansvariabler Funktioner PieceType, package Model Instansvariabler Funktioner Player, package Model Instansvariabler Funktioner Proxy, package Model Instansvariabler Funktioner Square, package Model Instansvariabler Funktioner StateData, package Model Instansvariabler Funktioner BenCode, package Net Funktioner Codec, package Net Konstanter Instansvariabler Funktioner Network, package Net Instansvariabler
4 Funktioner Interna Klasser Filspecifikation Spelplan Pjästyp
5 1 Översikt 1.1 Inledning Drabbning är skrivet i Java, enligt objektorienterade principer och efter designmönstret Model-View-Controller. GUI klasserna fungerar alltså som View, spelets logik implementeras av Modelklasserna, och Controllern fungerar som en brygga mellan gränssnitt och spel. 1.2 GUI Programmets huvudklass Drabbning gör inte mycket mer än att sätta igång Controllern, vilken implementeras av den fantasifullt döpta klassen Controller. Denna äger och hanterar sedan både gränssnitt och logik. Anslutningsfönstret skapas av klassen ConnectGUI, och spelets huvudfönster av MainGUI och dennes underklasser. Control för rutan med knapparna Klar och Kapitulera, status för Statusrutan, Chat för chatrutan, och GUIBoard för spelplanen och Square för rutorna på spelplanen. 5
6 1.3 Logic Controller använder sig även av Logic, en specialklass för att starta spel och nätverksanslutningar, och för att läsa in kartor och spelpjäser från fil. Både kartor och spelpjäser sparas som textfiler, så att det skall vara så simpelt som möjligt att redigera dem och skapa nya. Drabbning är ju fortfarande i prototypstadiet och inte färdigbalanserat. Kartor representeras som objekt av klassen MapDefinition och pjästyper av klassen PieceType. 1.4 Game Spel representeras av klassen Game. De utspelar sig på en karta representerad av den nyss nämnda MapDefinition. Spelet använder klassen Board och denna i sin tur objekt av den interna klassen Square (inte att förväxlas med gränssnittets publika klass Square) för att hålla reda på var spelpjäserna står. Spelpjäser representeras av klassen Piece, är av en typ PieceType, tillhör en spelare som representeras av klassen Player, och vet att rutan de står på har koordinater representerade av ett objekt av Coord klassen. Vidare har spelet en GameState vilken håller reda på vilket tillstånd spelet befinner sig i t ex. inköpsfas, uppställningsfas, klar med uppställning och väntar på att motståndaren skall bli klar med sin, en pjäs är markerad för att utföra ett drag, o.s.v. Klassen StateData håller information relevant för de olika tillstånden som hur många pjäser man köpt, vilka pjäser man har markerat för att utföra en gemensam attack och målet för den gemensamma attacken, vilka spelare som deltar i spelet o.s.v. Slutligen skapar spelet Move objekt representerande de drag spelaren utför. Dessa lagras undan i statedata, varifrån de hämtas av nätverkets Sender tråd och sänds i väg till motspelaren. På motsvarande sätt tar nätverkets Receiver tråd mot drag från motspelaren. 6
7 1.5 Proxy Proxy är en annan specialklass. Oavsett om en spelare är nord eller syd kommer det grafiska gränssnittet att visa honom spelplanen roterad så att det ser ut som han är syd. Klassen Proxy används för att för en viss spelare och ett vist spel översätta mellan spelkoordinater och gränssnittskoordinater. 7
8 1.6 Cache För att kunna veta vilka rutor en pjäs kan gå till och vilka rutor den kan anfalla måste vi göra en sökning över spelplanen. StateData använder klassen Cache för att utföra och lagra resultatet av en breddenförstsökning efter vad den markerade pjäsen kan göra. 1.7 Network Nätverket för ett spel använder sig av trådar för att utföra sina sysslor. Tråden Receiver tar mot drag från motspelaren och utför dem på spelmodellen. Tråden Sender skickar spelarens egna drag till motspelaren. Tråden Connecter används enbart då man agerar server, och ligger då och väntar på att en utmanare skall ansluta till spelet. Klassen codec används för att konvertera drag och annan information som ska skickas över nätet till objekt av datatyperna heltal, strängar, listor och dictionaries. Dessa kodas sedan med protokollet Bencoding, ett protokoll för att koda just dessa sorters datatyper som text, med hjälp av klassen BenCode. 8
9 2 Klassbeskrivning 2.1 Drabbning Drabbning klassen används för att starta spelet Funktioner public static void main(string [] args) Startar spelet genom att skapa en instans av Controller klassen och en instans av ConnectGUI klassen. 2.2 Chat, package GUI Chat klassen bygger upp och sköter chatrutan i spelets huvudfönster. Chatrutan används inte enbart för kommunikation spelarna emellan, utan även för meddelanden från spelet Instansvariabler private Controller controller Instans av Controller klassen som tar hand all inmatning. private TextArea chatmessage Innehåller chattens text. 9
10 private JTextField chatbox private JButton send Ett textfält för att skriva in meddelanden till motspelaren och en knapp för att sända dem Funktioner public Chat(Controller controller) Konstruktor. Skapar en chatruta och ritar ut dess innehåll i form av textrutor och knappar. public void enablesend() Aktiverar meddelanderutan och "Skicka" knappen. public void addmessage(string message) Lägger till ett meddelande i textrutan som visar chathistoriken. public void chatmessage(string message) Som addmessage, men lägger till > framför meddelandet för att visa att det kommer från motspelaren. public void actionperformed(actionevent e) Lägger till meddelandet till chathistoriken i chatrutan, och anropar controller för att skicka meddelandet till motståndaren. 2.3 ConnectGUI, package GUI ConnectGUI klassen bygger upp och visar fönstret som innehåller all information och inmatning som behövs för att skapa anslutningen mellan de två spelarna Instansvariabler private Controller controller Instans av Controller klassen som tar hand all inmatning. private Vector boards Vektorn innehåller listan med fördefinierade spelbräden. private JFrame connectwindow Själva anslutningsfönstret. private ButtonGroup serverclientgroup private JRadioButton serverbutton private JRadioButton clientbutton För att välja om man vill starta ett spel som server, eller ansluta till ett spel som klient. private JPanel clientpanel Panel med de alternativ som är relevanta för att ansluta till ett spel som klient. private JTextField remoteadress 10
11 private JTextField remoteport private JLabel adressportlabel Textfält för att fylla i adress och port hos servern man ansluter till, samt etikett för dessa fält. private JButton makeconnection Knapp för att ansluta till server. private JPanel serverpanel Panel med alternativ för att starta ett spel som server. private JTextField localport private JLabel portlabel Textfält för att fylla i den port servern lyssnar på, samt etikett för fältet. private JButton waitforconnection Knapp för att vänta på att en utmanare ansluter till servern så spelet kan börja. private JPanel settingpanel Panel med fler alternativ som är relevanta då man startar spel som server. private JSpinner serverresources private SpinnerNumberModel serverresourcesmodel private JTextArea serverresourcestext private JLabel serverresourcelabel private JSpinner serverresources private SpinnerNumberModel clientresourcesmodel private JTextArea clientresourcestext private JLabel clientresourcelabel private JLabel resourcelabel Spinners för att ställa in resurser för server och klient, samt etiketter för dessa. private JList boardlist private JScrollPane boardchose private JLabel boardlabel En lista för att välja vilken karta man skall spela på, samt dess etikett Funktioner public ConnectGUI(Controller controller, Vector boards) Konstruktor. Skapar och visar anslutningsfönstret. private void populateframe(container container) private JPanel buttonspanel() private JPanel clientpanel() private JPanel serverpanel() private JPanel settingspanel() private JPanel resourcespanel() private JPanel boardspanel() Hjälpfunktioner för konstruktorn. Skapar fönstrets innehåll. 11
12 private void setenabledforclient(boolean enabled) Aktiverar och stänger av alla objekt i klientpanelen. private void setenabledforserver(boolean enabled) Aktiverar och stänger av alla objekt i serverpanelen och inställningspanelen. public int getserverresource() Returnerar det resursvärde som ställts in för spelaren som agerar server. public int getclientresource() Returnerar det resursvärde som ställts in för spelaren som agerar klient. public String getboardmap() Returnerar namnet på det spelbräde som valts. public String getadress() Returnerar ip-adressen spelaren som agerar klient har angett. public int getserverport() Returnerar det portnummer som spelaren som agerar server har angett. public int getclientport() Returnerar det portnummer som spelaren som agerar klient har angett. public void serverblock() Ändrar utseendet på användargränssnittet så att det går och avbryta ett anslutningsförsök. public void serverunblock() Ändrar utseendet på användargränssnittet så att det går att välja att börja vänta på en anslutning ska skapas. public void actionperformed(actionevent e) Tar hand om inmatningen i fönstret och vidarebefordrar denna till klassen Controller genom att anropa olika metoder i Controller klassen. Vilken metod som anropas beror på inmatningen. De metoder som kan anropas i Controller är: - connectpressed, denna metod anropas om spelaren valt att agera klient. - awaitconnectionpressed, denna metod anropas om spelaren har valt att agera server. 2.4 Control, package GUI Control klassen bygger upp och sköter kontrollrutan i spelets huvudfönster. Denna består av två knappar Instansvariabler private Controller controller Instans av Controller klassen som tar hand all inmatning. private JButton ready Knapp för att avsluta din tur. 12
13 private JButton surrender Knapp för att ge upp Funktioner public Control(Controller icontroller) Konstruktor. Skapar en kontrollruta och ritar ut dess innehåll. public void enablecapitulate() Ändrar egenskapen enabled till true för knappen Kapitulera, dvs det går att trycka på knappen. public void enableready() Ändrar egenskapen enabled till true för knappen Klar, dvs det går att trycka på knappen. public void disableready() Ändra egenskapen enabled till false för knappen Kapitulera, dvs det går inta att trycka på knappen. public void actionperformed(actionevent e) Vidarebefordrar knapptryckningar till klassen Controller genom att anropa capitulatepressed eller readypressed. 2.5 Controller, package GUI Control klassen tar hand om all inmatning från användargränssnittet Instansvariabler private ConnectGUI connectgui Instans av ConnectGUI klassen som har hand om användargränssnittet för anslutningen mellan de två spelarna. private MainGUI game Instans av MainGUI klassen som bygger upp huvudfönstret. private GUIBoard board Instans av GUIBoard klassen som ansvarar för den grafiska representationen av spelbrädet. private Chat chat Instans av Chat klassen som bygger upp chatrutan i huvudfönstret. private Status status Instans av Status klassen som bygger upp statusrutan i huvudfönstret. private Control control Instans av Control klassen som bygger upp kontrollrutan i huvudfönstret. 13
14 private Logic logic Instans av Logic klassen från Model paketet. private Game game Det spel som spelas. private Proxy proxy En proxy för lokal spelare, aktivt spel. private PieceType piecetoplace Aktuell pjästyp som spelaren valt för utplacering på brädet i pjäsplaceringsfasen. private PieceType piecetypeinsquare När en ruta markerats på spelbrädet sätts denna instansvariabel till den pjästyp som finns i rutan. private Piece pieceinsquare När en ruta markerats på spelbrädet sätts denna instansvariabel till den pjäs som finns i rutan. private int mode Håller reda på vilken fas spelaren är i: 0 = pjäsrekrytering 1 = pjäsplacering 2 = spelfasen Funktioner public Controller() Konstruktor. Instantierar logic. public void showconnectgui() Skapar och visar fönstret för att starta ett spel. public void hideconnectgui() Stänger anslutningsfönstret. public void showmaingui() Skapar och visar spelfönstret. public void updatenumbersleft() Hämtar hur information från spelmodellen om många pjäser varje spelare har kvar och vidarebefordrar denna information till Status klassen. public void startthread() Startar en tråd som lyssnar på spelmodellen efter ändringar i spelet, tex om spelplanen behöver ritas om. Dessutom lyssnar tråden efter chatmeddelanden public void setboard(guiboard iboard) Initierar instansvariabeln board till iboard. 14
15 public void setchat(chat ichat) Initierar instansvariabeln chat till ichat. public void setstatus(status istatus) Initierar instansvariabeln status till istatus. public void setcontrol(control icontrol) Initierar instansvariabeln control till icontrol. public void connectpressed() Skapar ett spel i spelmodellen som klient och försöker ansluta till servern. public void awaitconnectionpressed() Skapar ett spel i spelmodellen som server och väntar på att en klient ska ansluta. public void abortserver() Servern slutar lyssna efter utmanare. public void connectionestablished(game game) Stänger anslutnignsfönster, visar spelplan, startar spel. public void servererror(exception e) Anropas av nätverket om försök att lyssna efter anslutningar misslyckas. private void placeorremovepiece(coord coord) Placerar ut en pjäs på rutan om den är tom, och plockar bort pjäsen som står där om den inte är det. private void updatelefttoplace(piecetype oftype) Används när pjäser ställts ut eller tagits bort. Uppdaterar textfälten i status för att visa hur många pjäser av en viss typ man har kvar att ställa ut. public void sqaurepressed(coord square) Anropas då spelaren klickat på en ruta på spelbrädet. I placeringsfasen anropas placeorremovepiece. I spelfasen skickas information om pjäsen till Status klassen. Dessutom skickas information om klicket till spelmodellen. public void pressedsend(string message) Anropas då en spelare tryckt på Skicka knappen i chatrutan. Metoden skickar chatmeddelandet message till motspelaren via nätverket. public void chooseknight() Anropas då en spelare tryckt på tung ryttare i statusrutan under pjäsplaceringsfasen. Metoden sätter piecetoplace till tung ryttare och talar om för Status klassen att tung ryttare är vald. public void choosehorseman() Anropas då en spelare tryckt på lätt ryttare i statusrutan under pjäsplaceringsfasen. Metoden sätter piecetoplace till lätt ryttare och talar om för Status klassen att lätt 15
16 ryttare är vald. public void chosefootman() Anropas då en spelare tryckt på fotsoldat i statusrutan under pjäsplaceringsfasen. Metoden sätter piecetoplace till fotsoldat och talar om för Status klassen att fotsoldat är vald. public void choseflag() Anropas då en spelare tryckt på fana i statusrutan under pjäsplaceringsfasen. Metoden sätter piecetoplace till fana och talar om för Status klassen att fana är vald. public void capitulatepressed() Anropas då en spelare klickat på knappen Kapitulera. Metoden öppnar en dialog och frågar om spelaren verkligen vill kapitulera. Om så är fallet talar metoden om för spelmodellen att spelaren har kapitulerat. public void exitpressed() Anropas då en spelare stänger sitt spelfönster och metoden avslutar självklart programmet. public void readypressed() Anropas då en spelare klickat på knappen Klar. Beroende på vilket värde mode har görs olika saker. Om mode = 0 har spelaren just rekryterat sina pjäser och ska placera ut dem. Spelbrädet ritas ut och informationen i statusrutan ändras till information om pjäsplaceringen. Dessutom informeras spelmodellen om att spelaren är färdig med rekryteringsfasen. Till sist sätts mode till 1. Om mode = 1 har spelaren placerat ut alla sina pjäser. Spelbrädet ritas om och spelmodellen informeras om att spelaren är färdig med pjäsplaceringsfasen. Till sist sätts mode till 2. Om mode = 2 är spelet i spelfasen. Ett klick på knappen Klar innebär då att spelaren är färdig med sina drag denna omgång. Spelmodellen informeras om detta. 2.6 GUIBoard, package GUI GUIBoard klassen har två uppgifter. Dels ritar klassen ut spelbrädet och dels ritar klassen ut gränssnittet för pjäsrekrytering. Gränssnittet för pjäsrekryteringen och spelbrädet ritas ut vid olika tillfällen men på samma ställe i spelets huvudfönster så därför implementeras detta i samma klass Instansvariabler private Controller controller Instans av Controller klassen som tar hand all inmatning. private Square[][] square Matris som innehåller spelbrädets alla rutor. private int resource Storleken på de resurser som spelaren kan rekrytera för. 16
17 private int freeresource Storleken på de resurser som spelaren har kvar att rekryterarför. private int footmen private int knights private int horsemen Antalet fotsoldater, tunga ryttare och lätta ryttare spelaren köpt. protected int sizex Spelbrädets storlek i x-led. protected int sizey Spelbrädets storlek i y-led. private JLabel ResourcesLabel Visar hur många resurser spelaren har att köpa pjäser för. private JLabel knightslabel private JLabel horsemenlabel private JLabel footmenlabel Visar hur många tunga ryttare, lätta ryttare och fotsoldater spelaren köpt för sina resurser. private JSpinner knightsspinner private JSpinner horsemenspinner private SpinnerNumberModel knightsmodel private SpinnerNumberModel horsemenmodel private JTextArea knightsspinnertext private JTextArea horsemenspinnertext Spinners för att köpa tunga och lätta ryttare. private JPanel squares private JScrollPane scrollsquares private JViewport viewport Den panel där spelrutorna visas under uppställningsfasen och spelfasen, med tillhörande ScrollPane och Viewport. Icon bluefootman Icon greenfootman Icon bluehorseman Icon greenhorseman Icon blueknight Icon greenknight Icon blueflag Icon greenflag Grafik som används av spelrutorna Funktioner public GUIBoard(Controller icontroller) Konstruktor. Anropar loadgraphics 17
18 public void choosepieces() Ritar ut gränssnittet för pjäsrekryteringen. public void setupboard() Skapar matrisen med rutorna på spelbrädet och ritar ut detta. public void setresource(int iresource) Ställer in spelarens resurser. public int getfootmen() public int getknights() public int gethorsemen() Returnerar antalet fotsoldater, tunga ryttare och lätta ryttare spelaren köpt. public void redrawboard() Går igenom matrisen square och talar om för varje ruta att den ska uppdatera sig, dvs rita om sig. public void loadgraphics() Laddar in grafiken för de olika spelpjäserna. 2.7 Left, package GUI Left klassen är en hjälpklass för uppbyggandet av användargränssnittet. Den skapar den vänstra halvan av spelets huvudfönster Instansvariabler private GUIBoard board Instans av GUIBoard klassen som ritar ut spelbrädet. private Chat chat Instans av Chat klassen som ritar ut chatrutan Funktioner public Left(Controller controller) Konstruktor. Skapar den vänstra halvan av spelets huvudfönster som består av ett spelbräde och en chatruta. 2.8 MainGUI, package GUI MainGUI klassen skapar spelets huvudfönster och skapar dess innehåll Instansvariabler private JFrame mainwindow Själva fönstret som spelet visas i. 18
19 private Left left Instans av Left klassen som ritar den vänstra halvan av spelets huvudfönster. private Right right Instans av Right klassen som ritar den högra halvan av spelets huvudfönster. private Controller controller Instans av Controller klassen som tar hand all inmatning Funktioner public maingui(controller controller) Konstruktor. private void populateframe(container container) Skapar den vänstra och högra halvan av spelets huvudfönster. Används av konstruktorn. public void windowclosing(windowevent e) Anropar exitpressed i Controller klassen. 2.9 Right, package GUI Right klassen är en hjälpklass för uppbyggandet av användargränssnittet. Den skapar den högra halvan av spelets huvudfönster Instansvariabler private Control control Instans av Control klassen som ritar ut kontrollrutan. private Status status Instans av Status klassen som ritar ut statusrutan Funktioner public Right(Controller controller) Konstruktor. Skapar den högra halvan av spelets huvudfönster som består av en statusruta och en kontrollruta Square, package GUI Square klassen är den grafiska representationen av en ruta på spelbrädet Instansvariabler private Controller controller Instans av Controller klassen som tar hand all inmatning. 19
20 private GUIBoard board Instans av GUIBoard klassen som ansvarar för den grafiska representationen av spelbrädet. private Coord coord Pekar ut rutan på spelmodellens bräde Funktioner public Square(Coord coord, GUIBoard board, Controller controller) Konstruktor. Skapar en ruta på brädet och ritar ut den. private void updateicon() Ändrar spelpjäsen (som representeras av en ikon) i rutan. Vilken ikon som visas i rutan beror på rutans status i spelmodellen. private void updatebackground() Ändrar rutans bakgrundsfärg. Vilken färg som visas beror på rutans status i spelmodellen. public void updatesquare() Anropar updateicon och updatebackground. public void mouseclicked(mouseevent e) Anropar squarepressed i Controller klassen Status, package GUI Status klassen bygger upp och ritar ut statusrutan i spelets huvudfönster. Statusrutan har tre olika utseenden. Vilket utseende som visas beror på i vilken fas spelet befinner sig i. Om spelet är i pjäsrekryteringsfasen visar statusrutan information om de olika pjäsernas egenskaper. Om spelet är i pjäsrplaceringsfasen visar statusrutan information om hur pjäser som är kvar att placera ut. Om spelet är i spelfasen visar statusrutan information om spelarnas antal kvarvarande spelpjäser och information om markerad pjäs Instansvariabler private Controller controller Instans av Controller klassen som tar hand all inmatning. private JLabel knightclickable private JLabel horsemanclickable private JLabel footmanclickable private JLabel flagclickable Används vid utplaceringsfasen. Dessa labels används för att visa vilken typ av pjäser spelaren ställer ut, hur många pjäser han har kvar att ställa ut, och för att låta honom ändra vilken typ av pjäser han ställer ut. private JLabel turntext Används vid spelfasen. Visar vems tur det är. 20
21 private JLabel footmannumbertext private JLabel horsemannumbertext private JLabel knightnumbertext Används vid spelfasen. Visar hur många pjäser båda spelarna har kvar av en viss typ. private JLabel piecetypetext private JLabel movementtext private JLabel strengthtext Används vid spelfasen. Visar den valda pjäsens typ, steg, och kraft. private JLabel manypower private JLabel manypowernumbertext private JLabel selectedpieces private JLabel selectedpiecestext Skulle användas under spelfasen, vid gruppattack. Används inte Funktioner public Status(Controller controller) Konstruktor. Anropar piecerecruit. Länkar samman Controller objektet och Status objektet. public void piecerecruit() Skapar och ritar ut statusrutans innehåll under pjäsrekryteringsfasen. private Container pieceinfocontainer(piecetype type) Hjälpfunktion för piecerecruit. Skapar en inforuta över en pjästyp. public void pieceplace() Skapar och ritar ut statusrutans innehåll under pjäsplaceringsfasen. public void gamestatus() Skapar och ritar ut statusrutans innehåll under spelfasen. private JPanel turnpanel() private JPanel playerinfopanel() private JPanel pieceinfopanel() Hjälpfunktioner för gamestatus. public void updatefootmenlefttoplace(int footmen) public void updatehorsemenlefttoplace(int horsemen) public void updateknightslefttoplace(int knights) public void updateflagslefttoplace(int flags) Uppdaterar informationen om hur många pjäser av en viss typ som är kvar att placera ut. public void updatepiecetype(string type) public void updatemovement(int movement) public void updatestrength(int strength) public void updatewithpiece(piece piece) 21
22 Uppdaterar informationen om vilken pjästyp den valda pjäsen är, hur många steg den har kvar, och hur mycket styrka den har kvar. public void resetinfo() Anropas om ingen spelruta är markerad. Metoden tömmer informationen om markerad pjäs. public void updatefootmenleft(int blue, inte green) public void updatehorsemenleft(int blue, inte green) public void updateknightsleft(int blue, inte green) Uppdaterar informationen om hur många fotsoldater, lätta ryttare, eller tunga ryttare den blåa respektive gröna spelaren har kvar under spelfasen. public void setturn(boolean blueturn) Uppdaterar informationen om vilken spelares tur det är: true ger blås tur false ger gröns tur public void markknight() Metoden markerar tung ryttare genom att göra denna text blå och större. Metoden används för att indikera att spelaren valt tung ryttare under pjäsplaceringsfasen. public void markhorseman() Metoden markerar lätt ryttare genom att göra denna text blå och större. Metoden används för att indikera att spelaren valt lätt ryttare under pjäsplaceringsfasen. public void markfootman() Metoden markerar fotsoldat genom att göra denna text blå och större. Metoden används för att indikera att spelaren valt fotsoldat under pjäsplaceringsfasen. public void markflag() Metoden markerar fana genom att göra denna text blå och större. Metoden används för att indikera att spelaren valt fana under pjäsplaceringsfasen. public void mouseclicked(mouseevent e) Anropar choseheavyknight, choselightknight, chosefootsoldier, choseflag i Controller klassen beroende på vilken pjästyp spelaren klickat på Board, package Model Board klassen representerar en spelplan i spelmodellen. Den används för att hålla reda på var alla pjäser finns och viss status om rutorna, t.ex. om en ruta innehåller en pjäs som går att anfalla Konstanter static final int CLEAN Statusvärde för tom ruta, och för alla rutor utom block då spelet avslutats. static final int PLACE Statusvärde för ruta där det är möjligt att placera en pjäs. 22
23 static final int BLOCK Statusvärde för blockerade rutor. static final int REACH Statusvärde för rutor som är möjlig att nå för vald pjäs. static final int FRIEND Statusvärde för rutor med pjäser vars spelare är på samma sida som den som nu spelar. static final int S_ABLE Statusvärde för rutor med pjäser vars spelare är på samma sida som den som nu spelar, och som är möjliga att välja som nästa pjäs att flytta. static final int G_ABLE Statusvärde för rutor med pjäser vars spelare är på samma sida som den som nu spelar, och som är möjliga att inkludera i en gruppattack. static final int SELECT Statusvärde för rutan där den nu valda pjäsen står. static final int G_SELECT Statusvärde för rutor på vilka det står pjäser som är valda för att delta i en gruppattack. static final int ENEMY Statusvärde för rutor på vilka det står en fiende. static final int A_SELECT Statusvärde för rutor på vilka det står en fiende som är målet i en gruppattack. static final int ATTACK Statusvärde för rutor på vilka det står en fiende, som är inom räckhåll för den nu valda pjäsen och som är tillräckligt svaga för att bli tagna av pjäsen själv. static final int GROUP Statusvärde för rutor på vilka det står en fiende, som är inom räckhåll för den nu valda pjäsen, vilka är för starka för att pjäsen själv ska kunna ta dem men det finns tillräckligt med möjliga medhjälpare så att en gruppattack är möjlig. static final int STRONG Statusvärde för rutor på vilka det står en fiende, som är inom räckhåll för den nu valda pjäsen, vilka är för starka för att pjäsen själv ska kunna anfalla, och det ej finns tillräckligt med medhjälpare Instansvariabler private GameState gamestate Spelets statusinformation. 23
24 private StateData statedata Spelets statusdata. private Square[][] board Själva brädet, indexerat med x som första variabel och y som andra. (board[x][y]) Funktioner public Piece getpieceat(coord c) Hämtar pjäsen på angiven ruta. Piece getpieceat(int x, int y) Hämtar pjäsen på angiven ruta. public int getstatusat(coord c) Hämtar statusvärdet på angiven ruta. public int getwidth() Returnerar bredden på detta bräde. public int getlength() Returnerar längden på detta bräde. public List getfriendsaround(player player, Coord c) Returnerar en lista med vänner till angiven spelare runt angiven ruta. public void resetboard() Rensar upp brädet efter att spelet har avslutats, sätter status till CLEAN på alla rutor som ej är blockade. Board(GameState gs, StateData sd, Coord dimension, List blocked) Initierar ett bräde med givna dimensioner och blockerade rutor. void setpieceat(coord c, Piece p) Sätter pjäs på koordinat. void setstatusat(coord c, int status) Sätter status på koordinat. boolean check(coord c) Returnerar true om angiven kordinat är inom spelbrädets dimensioner. void ensure(boolean b) Kontrollerar att parametern är sann. void ensure(coord c) Kontrollerar att given kordinat är inom spelbrädets dimensioner. 24
25 2.13 Cache, package Model Cache klassen innehåller data om vad en vald pjäs kan nå på spelplanen, alltså vilka rutor den kan nå och hur (attack, gruppattack eller vanlig förflyttning). Den kan dessutom ange vilken väg som använts för att nå en viss ruta Konstanter public final static int CIRCLE[][] En vektor som innehåller x-y par av en medsols runtgång av en ruta (med 8 möjliga håll att gå till). För i = 1 8 direct = (CIRCLE[i][0] (==X), CIRCLE[i][1] (==Y)) Instansvariabler private Piece piece Detta är en kopia av pjäsen som denna cache gäller för. Cachens information gäller bara så länge pjäsen inte ändras (till exempel flyttas). private Board board Brädet som pjäsen hör till. private CacheSquare[][] Den cachade informationen Funktioner public boolean validfor(piece p) Anger om denna cache är giltig för angiven pjäs. public void setstatus() Sätter status på brädet för att ange vart pjäsen som denna cache är beräknad för kan gå och anfalla. Sparar dessutom undan värdena som ändras för att kunna ta bort ändringarna som görs. public void unsetstatus() Tar bort ändringarna på brädet som görs i och med setstatus. boolean haspath(coord coord) Anger om det finns en väg till given koordinat för pjäsen denna cache gäller för. private int getextraat(coord coord) Privat funktion som returnerar extra data som cachats för den angivna funktionen. public boolean iswalk(coord coord) Anger om vägen som tar pjäsen till angeiven koordinat räknas som en förflyttning (till skillnad mot anfall/gruppattack). public boolean isattack(coord coord) Anger om vägen som tar pjäsen till angeiven koordinat räknas som ett anfall. List getpathto(coord coord) 25
26 Om det ej är möjligt att nå koordinaten returneras null, annars returneras en lista med alla de koordinater som visiteras mellan rutan pjäsen står i och angiven koordinat (för gränsande rutor är list.size() == 0) Cache(Board board, Piece piece) Skapa ett nytt cache som gäller för angiven piece på angivet bräde private void setup() Privat hjälpfunktion som initierar variablerna som en cache kräver, alltså undersöker pjäsen och skapar en matris och markerar vilka rutor som är tillgängliga och vilka som används av fiender och så vidare. private void find() Privat hjälpfunktion som genomför bredden-först-sökning för att finna alla koordinater som kan nås, och markerar dem i cache matrisen. private int getgroupstrengthround(coord coord) Privat hjälpfunktion som returnerar gruppstyrkan runt en koordinat, används för att undersöka om en gruppattack är möjlig CacheSquare, package Model Intern klass till Cache som används för att lagra information Instansvariabler int extra Information om vad som på rutan som motsvarar denna på brädet. Coord how Koordinat som anger från var denna ruta nås, är null om det ej går att ta sig till denna ruta Coord, package Model Coord klassen används för att peka ut en ruta på spelplanen från modellens håll sett. Gränssnittet kan visa spelplanen från olika sidor, och är därför tvunget att använda Proxy klassen för att översätta från sina egna koordinater till Coord objekt Instansvariabler private int xcoord X koordinaten, räknat som den används i board. (board[x][y]) private int ycoord Y koordinaten Funktioner Coord(int x, int y) 26
27 Konstruktor. Kastar fel om någon av parametrarna är negativa Coord(int x, int y, boolean ignore) Konstruktor. Ignorerar fel. int getx() int gety() boolean equals(coord) boolean equals(int, int) Coord translate(int x, int y) Snabb kopiering, eller flytt relativt denna koordinat. boolean isnear(coord coord) Returnerar true om denna koordinat är högst ett steg från den angivna. boolean isinrect(coord coord) Returnerar true om denna koordinat är inom en rektangel vars övre vänstra hör är (0,0) och vars nedre högra hörn anges av coord. boolean isinrect(int x1, int y1, int x2, int y2) Returnerar true om denna koordinat är inom rektangeln (x1,y1)-(x2,y4) Game, package Model Klassen Game utför själva kärnan hos spelmodellen Konstanter public static final int FAILURE Returneras då en funktion misslyckas. public static final int SUCCESS Anropet lyckades. public static final int IN_NEED Anropet lyckades troligvis men mer måste göras innan draget kan anses slutfört (alltså, med hjälpare till gruppattack krävs) Instansvariabler private MapDefinition mapdefinition Kartan som användes för att skapa det här spelet. private GameState gamestate Objektet som håller ordning på i vilken fas spelet befinner sig i. 27
28 private StateData statedata Objektet som håller ordning på saker som har att göra med den nuvarande fasen att göra (så som vald pjäs osv). private Board board Själva brädet Funktioner public List getsquaresinneedofupdate(player) Returnerar en lista över de pjäser som behöver uppdateras, skall endast användas av den lokala spelaren. public GameState getstate() public List gettypes() public Board getboard() public MapDefinition getmap() public StateData getdata() public Player getlocalplayer() public Player getremoteplayer() public PieceType getfootmantype public PieceType gethorsemantype public PieceType getknighttype public PieceType getflagtype Bekvämlighetsfunktioner. Returnerar PieceType objekt för pjästyp. public int getcreditsleft(player player) Returnerar antalet resurser kvar för spelaren i planeringsfasen. public int setnumberoftype(player player, PieceType type, int number) Anger hur många pjäser spelaren vill ha av given pjäs typ. public void setstandardpiecetypes(int footmen, int horsemen, int knights) Anger hur många av de olika typerna fotsoldater, lätta ryttare, och tunga ryttare spelaren vill ha. Om konfigurationsfilerna någonsin ändras måste denna funktion skrivas om. public int[][] getnumberofpiecesleft() Returnerar en dubbel vektor med antalet pjäser av de olika typerna både nord och syd spelaren har kvar (nord spelare först). public int donesettingup(player player) Anger att spelare är klar med planeringsfasen och är redo att börja placera ut sina pjäser. public int getleftof(player player, PieceType type) Returnerar antalet pjäser en spelare har kvar att placera ut av angiven typ. public int getleftofall(player player) Returnerar antalet pjäser en spelare har kvar att placera ut. 28
29 public int setpieceat(player player, PieceType piece, Coord coord) Försöker sätta en pjäs av angiven typ på given koordinat. public int unsetpieceat(player player, Coord coord) Tar tillbaka en utplacerad pjäs. public int donesettingpieces(player player) Anger att en spelare är nöjd med sin placering av pjäser och att den samme är villig att börja spela. public List getlocalsetup() Returnerar de pjäser som den lokale spelaren placerade ut på brädet under sin utplaceringsfas. public List getpiecesleft(player) Returnerar en lista med de pjäser som en spelare har kvar att flytta. public int selectpiece(player player, Piece piece) Försöker välja given pjäs. public Piece getselectedpiece() Returnerar den valda pjäsen. public int moveto(player player, Coord coord) Försöker flytta den valda pjäsen till en given ruta, utför anfall om möjligt. Om gruppattack är möjlig går spelet in i en gruppattacksfas som låter spelaren välja de medhjälpare han vill ha med. public int addtogroup(player player, Piece piece) Försöker addera given pjäs till den grupp av pjäser som hjälper till med en gruppattack. Om antalet pjäser är tillräckligt utförs attacken och SUCCESS returneras, om pjäsen läggs till men fler behövs returneras IN_NEED, annars returneras FAILURE. public int removefromgroup(player player, Piece piece) Tar bort en pjäs från anfallsgrupp. public int cancelattack(player player) Avbryter en påbörjad gruppattack. public int donemovingpiece(player player) Avslutar förflyttningen av vald pjäs, och eventuella attacker. public int donemovingpieces(player player) Avslutar turen för angiven spelare. public int doneplaying(player player) Ger upp. 29
30 Game(MapDefinition map, List piecetypes, int server_resources, int client_resources) Skapar ett server spel, som lottar ut både vem som är nord och syd och vem som får börja spela. Game() Skapar ett klientspel som inte initieras förrän kontakt med servern har utförts void initialsetup(list spelare, List typer, List resurser, MapDefinition) Utför initieringen av det här spelet, skapar brädet, initierar resurserna. private List locallydeterminegameorder() Skapar spelordningen lokalt (för servern) genom att slumpa ut vem som är nord och syd och vem som börjar spela. private int move(coord destination) Utför själva flytten till given koordinat. private int attack(coord target) Utför attack. private int group(coord coord) Utför lägg till i grupp. private int groupattack() Utför gruppattacken 2.17 GameState, package Model Klass som håller ordning på i vilken fas spelet befinner sig i Konstanter public final static int INVALID Spelet har ej blivit initierat, spelare, resurser med mera är okänt. public final static int INITIAL Spelet är redo att påbörjas genom att påbörja planeringen av typerna för den lokale spelaren public final static int END Spelet har avslutats, den spelare som förlorare sparas som aktiv spelare. public final static int LOCAL_PICK Det är den lokale spelarens tur att köpa pjäser. public final static int LOCAL_PLACE Det är den lokale spelarens tur att placera ut sina pjäser. public final static int REMOTE_PICK Fjärrspelares PICK (se ovan). 30
31 public final static int REMOTE_PLACE Fjärrspelares PLACE (se ovan). public final static int LOCAL_CHOOSE Det är den lokale spelarens tur att välja en pjäs att flytta. public final static int LOCAL_SELECT Det är den lokale spelarens tur att flytta pjäsen. public final static int LOCAL_ATTACK Det är den lokale spelarens tur att välja vilka medhjälpare han vill ha med i sin gruppattack. public final static int REMOTE_CHOOSE Fjärrspelares CHOOSE (se ovan). public final static int REMOTE_SELECT Fjärrspelares SELECT (se ovan). public final static int REMOTE_ATTACK Fjärrspelares ATTACK (se ovan). public final static String [] STATES Beskrivning av de olika faserna som spelet kan befinna sig i Instansvariabler private int state Vilken fas spelet befinner sig i. private Player player Den spelare vars tur det är Funktioner public boolean islocalturn() public boolean isremoteturn() public boolean isnoturn() Returnerar sant om spelet befinner sig i en sådan fas som inte kan sägas ha en aktiv spelare (INVALID, INITIAL och END) public int getstate() public String describestate() public boolean isplayersturn(player player) GameState() Initierar ett ett spels fas till INVALID Player getcurrentplayer() 31
32 void enterinitial() Anger att tillräckligt med data har givits för att spelet skall kunna anses initierat void enterpicking(player player) Anger att spelet skall påbörja en planeringsfas för given spelare void enterplacing() Anger att spelet skall påbörja en utplaceringsfas för spelaren vars tur det just nu är void enterplay(player player) Anger att spelet skall påbörja spelfasen, med given spleare som första spelare void enterselect() Anger att en pjäs blivit selekterad void leaveselect() Anger att en pjäs blivit avselekterad void enterattack() Anger att en pjäs har valts ut som mål void leaveattack() Anger att en attack är avbruten eller avklarad void leaveplay(player player) Anger att den nuvarande spelarens tur är slut, och påbörjar given spelares tur void enterend(player player) Anger att spelet är slut och att given spelare har förlorat boolean check(int s) boolean check(int s1, int s2) boolean check(int s1, int s2, int s3) boolean check(int s1, int s2, int s3, int s4) Kontrollerar att fasen är lika med någon av de givna värdena boolean check(player player) Kontrollerar att det given spelare är den vars tur det är boolean checknot(int s) Kontrollerar att fasen ej är den givna void ensure(boolean b) Försäkrar sig om att b gäller genom att kasta ett fel annars void ensure(int s) void ensure(int s1, int s2) void ensure(int s1, int s2, int s3) void ensure(int s1, int s2, int s3, int s4) void ensure(player player) 32
33 void ensurenot(int s) Som motsvarande check funktioner, fast försäkrar sig genom att kasta fel om något ej stämmer 2.18 Logic, package Model Initierar spel och tillhandahåller information om tillgängliga kartor Konstanter public static final String MAP_DEFS Den förvalda sökvägen till kartkonfigurationsfilen. public static final String TYPE_DEFS Den förvalda sökvägen till pjäskonfigurationsfilen Instansvariabler private Map maps De inlästa kartorna. private List types De inlästa pjästyperna. private String mapdef, typdef Sökvägarna till kart och typ konfigurationsfilerna. private Network network Kopia av det senast skapade nätverks objektet Funktioner public Logic(String map_defs, String type_defs) Skapar en ny Logic med givna sökvägar till kartor och typers konfigurationsfiler public Logic() Skapar en Logic med förvald konfiguration public void redomapcheck() Laddar om kartor. public void redorulecheck() Laddar om pjästyper. public MapDefinition getmap(string name) public List getmaps() public List gettypes() public Network getnetwork() public Game servergame(int port, String map, int server_resources, int client_resources) 33
34 Skapar ett spel som server. Blockar tills en klient har anslutit public Game clientgame(string host, int port) Skapar ett spel genom att ansluta till given host på given port och vänta på svar void mapfind() Laddar kartorna. void typefind() Laddar pjästyperna. private static PieceType typeload(url where) Gör laddningen från given url. private static MapDefinition mapload(url where) Gör laddningen från given url. private static boolean load(url where, Map def) Hjälpfunktion som laddar in data på form key = value till en Map. private static List list(url where) Returnerar en lista av det som finns på given plats. private static List decode(string value) Avkodar konfigurationsinformation till rätt typer MapDefinition, package Model Denna klass innehåller all data som har att göra med en karta Instansvariabler private String name, desc, show Namnet, beskrivningen och en extra show sträng för denna karta (show används inte). private Coord dim, startn1, startn2, starts1, starts2 Dimensionen för kartan och rektanglar som beskriver var nord respektive syd spelaren kan börja. Rektanglarna används inte. private Set north, south Mängder med koordinater som är giltiga för nord respektive syd spelaren att placera ut sina pjäser på. private List unpass Lista med koordinater som är blockerade på denna karta Funktioner public String getname() 34
35 public String getdescription() public Coord getmaxsize() public int getxmax() public int getymax() public Set getnorthstarting() public Set getsouthstarting() public List getunpassable() public String getshow() Returnerar relevant variabel. public MapDefinition(String name, String description, String show, Coord size, List south_start, List north_start, List blocked) Konstruktor Move, package Model Klass som används för att spara drag till dess att nätverket kan skicka iväg dem Instansvariabler private Coord from, to Anger från vad och till vart denna förflynning handlar om. private List help Om denna förflynning tar hjälp av en gruppattack sparas medhjälparna här. private Move last Om ett drag består av flera delförflyttningar sparas dessa som en länkad lista. last är den föregående förflyttningen i lisatn. Efter att nätverket har översatt draget pekar last i stället på nästa förflyttning i listan Funktioner public Move(Coord from, Coord to) Skapar en enkel förflyttning eller en attackförflyttning. public Move(Coord from, Coord to, List helpers) Skapar en gruppattacksförflyttning public Move(Coord from, Coord to, List helpers, Move prev) Skapar en förflyttning som föregicks av en annan förflyttning. public Coord getfrom() public Coord getto() public Coord getlast() public List gethelp() public void setlast(move last) 35
36 2.21 Piece, package Model Piece klassen representerar spelpjäser som används i spelet Instansvariabler private PieceType type Anger vilken sorts pjästyp som spelpjäsen är. private int strength Spelpjäsens nuvarande styrka. En pjäs som anfaller en annan får sin styrka sänkt med lika mycket som styrkan hos den han övervinner. Om en pjäs avslutar sitt drag med en styrka under maxstyrka nollställs dess styrka för att hindra den från att delta i gruppattacker. Alla spelpjäser får sin styrka återställd till den max som anges av deras PieceType efter att deras spelare avslutat sin runda. private int movement Spelpjäsens nuvarande förflyttning. En pjäs får sin förflyttning sänkt med ett för varje steg den tar. Om en pjäs avslutar sitt drag med förflyttning under sin maxförflyttning nollställs dess förflyttning. (Om pjäsen har full förflyttning när den "avslutar" sitt drag kan den inte ha gjort något drag, och dess förflyttning bibehålls så att den kan flyttas senare under rundan.) Alla spelpjäser får sin förflyttning återställd till den max som anges av deras PieceType efter att deras spelare avslutat sin runda. private Player player Spelpjäsens ägare. private Coord square Spelpjäsens position på spelplanen. Måste hållas syncad med den information om spelpjäsens position som finns i dess Board. private int selected En spelpjäs kan ha markeringsstatus vald att utföra ett drag vald att delta i gruppattack ej markerad Funktioner Piece(PieceType type, Player player) Konstruktor. public PieceType gettype() public int getstrength() public int getmovement() public Player getplayer() public Coord getsquare() Ger den relevanta variablens värde. public boolean isselected() Avgör om pjäsen är vald för att utföra ett drag. 36
37 public boolean isgroupselected() Avgör om pjäsen är vald för att hjälpa till i en gruppattack. public boolean isselected() Avgör om pjäsen är vald som mål i en gruppattack. public boolean isselectedforgroupattack() Avgör om pjäsen är vald för att utgöra medhjälpare i en gruppattack. void setstrength(int strength) Ändrar pjäsens styrka. void decreasestrength(int decreaseby) Minskar pjäsens styrka. Gör detta genom att anropa setstrength. void setmovement(int movement) Ändrar pjäsens förflyttning. void decreasemovement(int decreaseby) Minskar pjäsens förflyttning. Gör detta genom att anropa setmovement. void resetpiece() Återställer pjäsens förflyttning och styrka till max, angett av PieceType. void setsquare(coord square) Ändrar pjäsens läge. void movepiece(coord destination, int distance) Exakt samma sak som att anropa decreasemovement(distance) och sedan setsquare(destination). void select() void selectforgroupattack() void selectastarget() void deselect() Piece copy() Returnerar en kopia av denna pjäs PieceType, package Model Objekt av PieceType klassen utgör de klasser av spelpjäser som kan finnas i spelet, och vilka egenskaper dessa har Instansvariabler private String name Vad spelpjäsen kallas för spelarens del, t.ex "Fotsoldat" 37
PROJEKT- PRESENTATION
Projekt: Drabbning Projekthemsida: www.nada.kth.se/projects/prom03/drabbning Kurskod: 2D1362 Kursnamn: Programutvecklingsprojekt med mjukvarukonstruktion Uppdragsgivare: Pelle Mårtenson (pelle@kreativatankar.nu)
Projekt: Projekthemsida: Kurskod: Kursnamn: Uppdragsgivare: DRABBNING Projektmedlemmar:
Projekt: Drabbning Projekthemsida: www.nada.kth.se/projects/prom03/drabbning Kurskod: 2D1362 Kursnamn: Programutvecklingsprojekt med mjukvarukonstruktion Uppdragsgivare: Pelle Mårtenson (pelle@kreativatankar.nu)
Fyra i rad Javaprojekt inom TDDC32
Fyra i rad Javaprojekt inom TDDC32 Analys och design-dokument Version 2.0 Datum 2008-05-19 Dokumentnummer 20080303 Sammanfattning Detta är analys och design-dokumentet för programmet Fyra i rad. Fyra i
Lab5 för prgmedcl04 Grafik
Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna
Objektorientering: Lagring, räckvidd och livstid
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Objektorientering: Lagring, räckvidd och livstid Tre sorters variabler, två sorters metoder Räckvidd och livstid 2 Variabler (lokala och medlemsvariabler)
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl
Malmö högskola 2007/2008 Teknik och samhälle
Laboration 13 Avsikten med denna laboration är att du ska använda ett par nya grafiska komponenter. Dessutom ska du göra designen utan hjälp av en layout-manager (enklare). Börja med att skapa paketet
Tentamen i Objektorienterad programmering
CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar
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,
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[]
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5 Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor 1 Laboration 4 - Introduktion Syfte: Öva på självständig problemlösning
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å
Detaljbeskrivning av Player
Detaljbeskrivning av Player Syftet med Playerklassen är att representera det skepp som spelaren styr. Spelarens skepp styrs till skillnad från övriga skepp av spelaren både när det kommer till vilken riktning
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: 2:a september 200, klockan 8:30-12:30. Plats: V Ansvarig lärare: Katarina Blom, tel 772 10 0. Läraren besöker tentamen kl 9:30
Tentamen i Objektorienterad programmering
CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Fredagen 13 januari 2012, 14.00 18.00. Jourhavande lärare: Björn von Sydow, tel 0722/391401. Inga hjälpmedel. Lösningar
Objektorientering: Lagring och livstid
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Objektorientering: Lagring och livstid Tre sorters variabler Tre sorters variabel (1): Lokal 2 Lokal variabel Deklareras inuti en metod Vid varje anrop
Malmö högskola 2007/2008 Teknik och samhälle
Laboration Gui Avsikten med denna laboration är att du ska träna på att bygga grafiska användargränssnitt. Spara dina resultat i paketet laborationgui. Längst bak i laborationen finns fullständiga lösningar
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:
Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 18 Igår: Genomgång av dugga Rekursion Idag och på måndag: Om essän Lite, lite teori om konstanter Grafiska användargränssnitt Grundläggande
Föreläsnings 11 - GUI, Händelsestyrda program, MVC
Föreläsnings 11 - GUI, Händelsestyrda program, MVC Josef Svenningsson Tisdag 20/11 Boken Denna föreläsning går igenom följande sektioner i boken: 10.1 och 10.2 11.1 Notera att kapitel 11 inte finns i boken
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
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Grafiskt användargränssnitt, Swing Layout och komponenter Göra
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
Tentamen Programmeringsteknik I 2017-10-23 Skrivtid: 0800 1300 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
PROGRAMMERINGSTEKNIK TIN212
Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:
Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.
(7) Objektinteraktion Objektorienterad programmering Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. Mål Efter övningen skall du kunna konstruera ett program med flera
EDA095 Nätverksprogrammering
EDA095 Nätverksprogrammering Projekt Checkers Grupp 8, 2008 Dag Wahlberg Leo Barnes Erik Wallenborg Ylva Mellbin
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.
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
Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
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
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
Tentamen Programmeringsteknik I 2018-03-16 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Tor Sterner-Johansson Thomas Johansson Daniel Henriksson
Lab 4: Anti Tower Defence Oskar Mothander Alan Mendez Larsson dit06omr dit06mln Lärare: Handledare: Johan Eliasson Johan Granberg Tor Sterner-Johansson Thomas Johansson Daniel Henriksson Innehåll 1. Problemspecifikation...
Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Monday, November 16, Senaste Labben
Senaste Labben Senaste Labben Strålande resultat (mv 4.6)! Senaste Labben Strålande resultat (mv 4.6)! God objektorientering? Senaste Labben Strålande resultat (mv 4.6)! God objektorientering? God kodhygien?
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
Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016
Objektorienterad Programkonstruktion Föreläsning 3 7 nov 2016 Klass/instans Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik
Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).
Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)
Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel
732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public
Grafiska användargränssnitt i Java
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Stora delar har
TDDD78 Objektorientering: Lagring och livstid
jonas.kvarnstrom@liu.se 2017 TDDD78 Objektorientering: Lagring och livstid Tre sorters variabel (1): Lokal 3 Deklareras i en metod Lokal variabel Varje anrop får sin egen "kopia": Två anrop till foo()
Tentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
TENTAMEN I. OBJEKTORIENTERAD PROGRAMMERING för Z1. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
Institutionen för Datavetenskap JSk TENTAMEN TDA540 TENTAMEN I OBJEKTORIENTERAD PROGRAMMERING för Z1 TID 14.15-18.15 Ansvarig: Betygsgränser: Hjälpmedel: Jan Skansholm Sammanlagt maximalt 60 poäng. På
Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.
Fält av referenser Tanken med objekt är man kan bygga ihop olika sorts objekt till nya saker. Sålunda kan man exempelvis använda Bil och Trafikljus att konstruera ett Väg-objekt. Om Bil och Trafikljus
Projektdokumentation för Othello
Projektdokumentation för Gustav Fransson Nyvell gusfr229@student.liu.se Tomas Franzén tomfr819@student.liu.se 1. Inledning Vi har gjort ett -spel som går ut på att man turas om att lägga brickor på en
Nätverksprogrammering, EDA095
Nätverksprogrammering, EDA095 Projekt: Chess game, 2013-05-21 Handledare: Roger Henriksson Axel Hildingsson, a.hildingson@gmail.com Hoang Huyuh Truong, artiq90@yahoo.se Lisa Lindberg, rys07lli@student.lu.se
Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt
Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras
Grafiska användargränssnitt i Java
jonas.kvarnstrom@liu.se 2017 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Till stor del ersatt av Swing: Mer omfattande,
Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing
Föreläsning 15 (16) Introduktion till Swing Historik (java.awt) JDK 1.0 AWT (Abstract Window Toolkit) Paket för gränssnittsprogrammering Har en del nackdelar: Använder s.k. native code Stödjer endast komponenter
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
Grundläggande programmering med C# 7,5 högskolepoäng
Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)
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
Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.
Datateknik A, Syfte: Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass. Att läsa: Lektion 2 Uppgifter:
KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09
Laboration 4, ISG A04 och DVG A08 HT-09 Laborationen går ut på att skapa en enkel bankbok. Ni skall i bankboken kunna registrera upp till 30 transaktioner som kan bestå av insättning, uttag eller checkuttag.
Objektorienterad programmering med Java Swing. Programexempel. Swing och AWT AWT. = Abstract windowing toolkit
Swing och AWT Objektorienterad programmering med Java Swing Sven-Olof Nyström Uppsala Universitet March 14, 2006 Skansholm: Kapitel 6 AWT = Abstract windowing toolkit använder värddatorns fönstersystem
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
Tentamen Programmeringsteknik I 2016-06-11 Skrivtid: 0900 1400 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Objektorienterad Programkonstruktion. Föreläsning jan 2016
Objektorienterad Programkonstruktion Föreläsning 13 19 jan 2016 Tentamen Del I, E del Flervalsfrågor 20/25 krävs för godkänt, ger betyg E Upp till 7 möjliga bonuspoäng Del II, Högrebetygsdel Problemfrågor
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
Handbok Fyra i rad. Martin Heni Eugene Trounev Benjamin Meyer Johann Ollivier Lapeyre Anton Brondz Översättare: Stefan Asserhäll
Martin Heni Eugene Trounev Benjamin Meyer Johann Ollivier Lapeyre Anton Brondz Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Hur man spelar 6 3 Spelets regler, strategier och tips 7 3.1 Fjärranslutningar......................................
MVC-mönstret. model-view-control i Swing
MVC-mönstret model-view-control i Swing MVC Tanken bakom MVC (model view control) är att separera uppgifter i ett program från varandra. Model - Den data som behandlas View - Hur användargränssnittet ser
Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.
(7) Objektinteraktion Objektorienterad programmering 2 Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. Mål Efter övningen skall du kunna konstruera ett program med
Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll
Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Hur man spelar 6 3 Spelets regler, strategi och tips 7 3.1 Spelets grunder.......................................
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
PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2
DSV SU/KTH sid 1 (6) PROG2 VT13 PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 Tentan består av tre uppgifter. Max poäng är 38. För betyget E (godkänd) krävs minst
Del A (obligatorisk för alla)
Del A (obligatorisk för alla) A1. Ringa in rätt svarsalternativ eller skriv svar i ruta om sådan a) Satsen double x = (int)(1 + 3/2.0) + 3.; resulterar i b) Satsen int x = (int)(1 + 3/2.0) + 3.; resulterar
Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015
Objektorienterad Programkonstruktion Föreläsning 3 9 nov 2015 Kursnämnd Namn kommer... UML: Klassdiagram UML: Relationer Ärver från superklass Implementerar gränssnitt Dubbelriktad eller oriktad relation
Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004
Programmering hh.se/db2004 Föreläsning 11: Objektorienterad programmering - att definiera datatyper Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Datatyper Hittills Vi har lärt
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
Objektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Objektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Properties. Användbara metoder som kan anropas i propertychanged:
Properties Ett objekt kan ha vissa egenskaper (som beskrivs med instansvariabler). En enkel egenskap X avläses och sätts med metoderna getx() och setx(värde). En indexerad egenskap (från t.ex. en array)
Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt
Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur
Lösningsförslag övning 2.
Objektorienterad programmering, Z1 Lösningsförslag övning 2. Uppgift 1. public class SIUnits { public static double yardspermeter = 1.093613; public static double poundperkilo = 2.204623; public static
Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal
Tentamen DD2385 Programutvecklingsteknik vt 2009 Fredagen den 5 juni 2009 kl 10.00 13.00 Inga hjälpmedel utom penna, sudd och linjal Tentans del I omfattar 22 poäng. Del II har också 22 poäng Preliminära
Malmö högskola 2008/2009 CTS
Laboration 8 Avsikten med laborationen är att du lära dig skapa objekt med hjälp av klasser. Detta är en introduktion till ett objektorienterat tankesätt. Med hjälp av detta tankesätt kan du så småningom
ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter
ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering 1 DSV Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste åren I Java finns
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 (
Objektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
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
Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.
Tentamen 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.00, sal D31 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel
kl Tentaupplägg
Tentaupplägg Allmänna Tips Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut
Grafiska användargränssnitt i Java
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Stora delar har
Laboration 4: Digitala bilder
Objektorienterad programmering, Z : Digitala bilder Syfte I denna laboration skall vi återigen behandla transformering av data, denna gång avseende digitala bilder. Syftet med laborationen är att få förståelse
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-09-01 Skrivtid: 0900-1200 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
Laboration 1: Figurer i hierarki
Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras
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
Tentamen Programmeringsteknik I 2017-10-23 Skrivtid: 0800 1300 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Lösningsförslag tentamen FYTA11 Java
Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Lösningsförslag tentamen FYTA11 Java Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade
Föreläsning 10. ADT:er och datastrukturer
Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad
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
Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen
1 (6) TENTAMEN: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv din tentamenskod på varje blad (så att
Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.
Institutionen för Datavetenskap Göteborgs universitet HT2008 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 4 Exempel på listor (klassen ArrayList). Ett exempel med fält.
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
Tentamen Programmeringsteknik I 2017-03-16 Skrivtid: 0800 1300 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Användarmanual Wapspel
Användarmanual Wapspel Innehållsförteckning No Refuge...2 Telefonkrav...2 Inloggning...3 Huvudmenyn...3 Spelet...4 Spelplanen...4 Radar...5 Extra tillbehör...6 Earthquake...6 Night mission...6 Datorspelare...6
TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,
Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska
Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document
Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se
Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel
Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller
JAVAUTVECKLING LEKTION 11
JAVAUTVECKLING LEKTION 11 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Mer om klasser och objekt Statiska/instans-metoder Överlagrade metoder Inkapsling Konstruktorer 1 UPPGIFT