Beware before!! Observera att lösningarna till dessa uppgifter kanske inte alltid är de
allra bästa. Några behöver definitivt en översyn!/PHe
Grupp 2 Johan Nilsén- Erik Sundberg Markus Nordstrand- Jonny Heinonen
3.10
public int returnBig(int x, int y)
{
if(x >= y)
return x;
return y;
}
3.12
import java.io.*; import java.random.*;
public class produkt
{
static int kvalitet;
static String colour;
public produkt(String c, int k)
{
kvalitet = k;
colour = c;
}
public static void main(String args[]) {
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
String oneLine;
try{
System.out.println("Ange färg -> ");
oneLine = in.readLine();
produkt p;
p = new produkt(oneLine, ge_kvalitet());
System.out.println("Färg :" + produkt.colour);
System.out.println("Kvalitet :" + produkt.kvalitet);
}
catch (Exception e) { }
}
public static int ge_kvalitet()
{
return SimpleRandom.randInt(1,3);
}
}
3.17
/**
* DetPi.java
**/
import random.*;
class DetPi
{
public static void main(String [] args)
{
System.out.println("\n*************Determine pi*************\n");
int hits = 0, shoots = 10000;
double x, y;
for(int i=0; i<shoots; i++)
{
//Shoot
x = SimpleRandom.randReal(0,1);
y = SimpleRandom.randReal(0,1);
//Pythagoras
if(Math.sqrt(Math.pow(x,2) + Math.pow(y,2)) < 1)
hits++;
}
//Area == r*r*pi /4 == (hits/shoots)*1
double pi = (4*hits)/(double)shoots;
System.out.println("Av " + shoots + " \"skott\" träffade " + hits + "\"måltavlan\"");
System.out.println("Pi = " + pi);
}
}
Noggrannhet:
gränsvärdessatsen.
Konfidensintervall = 95% ger
my=Xm 1.96 * s / Vn , där s = standardavvikelse och n = antal testkörningar
Felet = (1.96 * s / Vn) / Xm
3.23
Egna antaganden vi gjort:
Vi använder bara en hamnkran, men inga större ändringar behövs för att lägga till flera.
Vi har gjort ytterligare en klass, Result, för att hantera utskrifterna som skall göras efter varje timme.
Bara last från de båtar som är helt färdiglossade räknas med vid varje timme.
Vi har lagt in diverse konstanter som finns med mest för att kunna testa programmet.
/**
* Inl3_23.java
**/
import sim.*;
public class Inl3_23
{
public static void main (String[] args)
{
//Det måste finnas en kran innan man börjar skicka in båtar
HarbourCrane harbourCrane = new HarbourCrane();
CargoShipGenerator cargoShipGenerator = new CargoShipGenerator(harbourCrane);
Scheduler.activate(cargoShipGenerator);
Scheduler.run_simulation();
}
}
/**
* CargoShipGenerator.java
**/
import java.util.*;
import sim.*;
import random.*;
public class CargoShipGenerator extends Prosess
{
private HarbourCrane crane;
public CargoShipGenerator(HarbourCrane h) {
super(); crane = h;
}
public void body() {
while(Scheduler.clock <= crane.getTimeLimit())
{
//Skapa och aktivera en ny båt
Scheduler.activate(new CargoShip(crane));
//Vänta en slumpmässig tid
Scheduler.hold(SimpleRandom.randInt(5, 35));
}
//Vänta länge tills alla båtar är klara
Scheduler.hold(100000);
terminate();
}
}
/**
* CargoShip.java
*
**/
import java.util.*;
import sim.*;
import random.*;
public class CargoShip extends Prosess
{
private static int nrOfShips = 0;
private int shipNr;
public static Vector lq = new Vector();
private HarbourCrane crane;
private int myLoad;
public CargoShip(HarbourCrane h)
{
super();
crane = h;
myLoad = SimpleRandom.randInt(2, 10);
nrOfShips++;
shipNr = nrOfShips;
System.out.println("Båt nr " + shipNr + " skapad med: " + myLoad + " tons last!");
}
public int getLoad()
{
return myLoad;
}
public void body()
{
//Lägg till båten i kön
lq.addElement(this);
//Om båten ligger först i kön så aktivera kranen
//annars väntar båten på sin tur
if(lq.size() == 1)
{
Scheduler.activate(crane);
}
else
{
Scheduler.passivate();
}
//Vänta den tid det tar att lossa
Scheduler.hold(myLoad*crane.getUnloadTime());
System.out.println("Båt nr " + shipNr + " färdiglossad!");
//Aktivera kranen igen för att se om fler båtar finns i kön
Scheduler.activate(crane);
terminate();
}
}
/**
* HarbourCrane.java
*
* Inlämningsuppgift 3.23
**/
import sim.*;
public class HarbourCrane extends Prosess
{
private int totalLoad;
private final int unloadTime = 5; //Tid som krävs för att lossa ett ton
private final int timeLimit = 480; //Hur länge ska simuleringen pågå
private Result myResult;
public HarbourCrane()
{
super();
totalLoad = 0;
}
public int getTotalLoad()
{
return totalLoad;
}
public int getUnloadTime()
{
return unloadTime;
}
public int getTimeLimit()
{
return timeLimit;
}
public void body()
{
//Skapa ett resultatobjekt
myResult = new Result(this);
Scheduler.activate(myResult);
while(true)
{
//Om det finns båtar i kö så ta hand om dessa
while(!CargoShip.lq.isEmpty())
{
//Ta första båten i kön
CargoShip myShip = (CargoShip) CargoShip.lq.firstElement();
Scheduler.activate(myShip);
Scheduler.passivate();
totalLoad += myShip.getLoad();
//När båten har lossats, ta bort den ur kön
CargoShip.lq.removeElementAt(0);
}
//Om simuleringstiden och kön tom är slut så avbryt
//annars väntar kranen på nästa båt
if(Scheduler.clock > timeLimit)
{
break;
}
else
{
Scheduler.passivate();
}
}
terminate();
}
}
/**
* Result.java
**/
import sim.*;
public class Result extends Prosess
{
private HarbourCrane crane;
public Result(HarbourCrane h)
{
super();
crane = h;
}
public void body()
{
int hours = 0;
while(!crane.terminated())
{
//Skriv ut totalt lossad last efter varje timme
Scheduler.hold(60);
hours++;
System.out.println("Efter " + hours + " timmar har kranen lossat " +
crane.getTotalLoad() + " ton.");
}
terminate();
}
}
3.25
Felen i koden är bl.a. Initeringen kommer efter koden.
Den byter riktning två gånger i rad i loopen (först och sist) vilket gör att bara bilar från en riktning får
grönt hela tiden.
Ifall det hela tiden kommer bilar kommer den aldrig att byta riktning vilket medför en enorm kö i den
andra riktningen.
Grupp 4 Bahadori- Hellström - Al-Saadi - Norberg
3.9
import java.io.*;
public class nr1{
static public void main(String[] arg)
throws IOException
{
double x;
BufferedReader in=new BufferedReader(
new InputStreamReader(System.in));
String str;
System.out.println("Ange talet X: ");
System.out.flush();
str=in.readLine();
x=Double.valueOf(str).doubleValue();
resPrint(x);
}
static public void resPrint(double x){
System.out.println("Resultatet blev: " + x);
}
}
3.11
import sim.*;
public class spy{
public void spion(String str){
System.out.println(str + " " + Scheduler.clock);
}
}
import java.io.*;
public class nr2{
public static void main(String[] args){
spy s=new spy();
s.spion("Hejsan");
s.spion("Hejsan");
s.spion("Hejsan");
s.spion("Hejsan");
}
}
3.21
import sim.*;
import random.*;
public class cust{
private int antalVaror;
private int nummer;
public int getAntalVaror(){return antalVaror;};
public int getNummer(){return nummer;};
public cust(int n){
nummer=n;
antalVaror=SimpleRandom.randInt(1,1000);
}
}
import java.io.*;
import sim.*;
import java.util.*;
public class nr3{
public static void main(String[] args){
Vector qu=new Vector();
int i;
cust t;
for(i=0;i<9;i++){
qu.addElement(new cust(i+1));
}
for(i=0;i<9;i++){
t=(cust)qu.elementAt(i);
System.out.println(t.getNummer() + " " + t.getAntalVaror());
}
}
}
3.26c
class kylvara{
private double temp;
String namn;
public void setTemp(double t){temp = t;}
public double getTemp(){return temp;}
public String getName(){return namn;}
public kylvara(String name,double t){namn=name;temp=t;}
}
import java.io.*;
import java.util.*;
public class nr4{
static Vector varor=new Vector();
static Vector varningar=new Vector();
static public double maxtemp=10;
public static void main(String[] args){
int i;
varor.addElement(new kylvara("1",23));
varor.addElement(new kylvara("2",3));
varor.addElement(new kylvara("3",5));
varor.addElement(new kylvara("4",10));
varor.addElement(new kylvara("5",11));
varor.addElement(new kylvara("6",7));
varor.addElement(new kylvara("7",3));
varor.addElement(new kylvara("8",13));
check_temp();
}
public static void check_temp(){
int i;
kylvara k;
double temp;
double medel;
medel=0;
for(i=0;i<varor.size();i++){
k=(kylvara)varor.elementAt(i);
temp=k.getTemp();
medel+=temp;
if(temp>maxtemp){
varningar.addElement(new warning(temp,k));
}
}
medel/=varor.size();
System.out.println("Antal varningar: " + varningar.size());
System.out.println("Medel = " + medel);
}
}
class warning{
private double temp;
private kylvara varuref;
warning(double t,kylvara vara){
temp=t;
varuref=vara;
System.out.println("Varning!! Temperatur=" + temp);
}
public double getTemp(){return temp;}
public kylvara getVaruref(){return varuref;}
}
3.15
import sim.*;
import random.*;
public class bilgenerator extends Prosess{
public trafikljus t;
public bilgenerator(trafikljus tr){
t=tr;
System.out.println("Ny bilgenerator");
}
public void body(){
int persbilnr=0;
int lastbilnr=0;
while(Scheduler.clock<trafikljus.stopTime){
int slump=SimpleRandom.randInt(1,5);
if(slump==1){
Scheduler.activate(new lastbil(++lastbilnr,t));
}else{
Scheduler.activate(new personbil(++persbilnr,t));
}
Scheduler.hold(5);
}
Scheduler.passivate();
terminate();
}
}
import sim.*;
import random.*;
import java.util.*;
import java.io.*;
public class lastbil extends Prosess{
private trafikljus t;
private int i;
public lastbil(int n,trafikljus tr){
i=n;
t=tr;
System.out.println("Ny lastbil " + i + " vid tiden " + Scheduler.clock);
}
public void body(){
if((t.green==false) || t.antalIKo>0){
t.antalIKo++;
t.bilqueue.addElement(this);
Scheduler.passivate();
t.antalIKo--;
}
System.out.println("Lastbil nr " + i + " kör vid tiden " +Scheduler.clock);
Scheduler.passivate();
terminate();
}
}
import sim.*;
public class main{
public static void main(String[] args){
trafikljus tl=new trafikljus();
Scheduler.activate(tl);
Scheduler.run_simulation();
}
}
import sim.*;
import random.*;
import java.io.*;
import java.util.*;
public class personbil extends Prosess{
private trafikljus t;
private int i;
public personbil(int n,trafikljus tr){
i=n;
t=tr;
System.out.println("Ny personbil " + i + " vid tiden " + Scheduler.clock);
}
public void body(){
int slump;
if((t.green==false) || t.antalIKo>0){
t.antalIKo++;
t.bilqueue.addElement(this);
Scheduler.passivate();
t.antalIKo--;
}
slump=SimpleRandom.randInt(1,100);
if(slump<=50){
System.out.println("Bil nr " + i + " kör rakt fram vid tiden "
+Scheduler.clock);
}else if((slump>50) && (slump<=80)){
System.out.println("Bil nr " + i + " svänger åt vänster vid tiden "
+Scheduler.clock);
}else{
System.out.println("Bil nr " + i + " svänger åt höger vid tiden "
+Scheduler.clock);
}
Scheduler.passivate();
terminate();
}
}
import sim.*;
import random.*;
import java.util.*;
import java.io.*;
public class trafikljus extends Prosess{
public Vector bilqueue=new Vector();
static public final int stopTime=200;
public boolean green;
public int antalIKo=0;
public trafikljus(){
System.out.println("Nytt trafikljus");
}
public void body(){
int delay;
Prosess bil;
green=true;
bilgenerator bg=new bilgenerator(this);
Scheduler.activate(bg);
while(Scheduler.clock<stopTime){
Scheduler.hold(40);
green=(!green);
if(green==true){
System.out.println("Grönt ljus!");
delay=0;
while(!bilqueue.isEmpty()){
delay++;
bil=(Prosess)bilqueue.firstElement();
bilqueue.removeElementAt(0);
Scheduler.reactivate(bil,delay);
}
}
else System.out.println("Rött ljus!");
}
Scheduler.passivate();
terminate();
}
}
Bilgenerator
Personbil
start
start
bilen
Aktivera en ny
bil eller lastbil
Kolla om rött ljus eller kö
inte tom ställs i kön
aktiverad
Slumpa körning
50% raktfram
30% vänster
20% höger
Vänta (5)
Kolla slut_tid
slut
Lastbil
start
Kolla om rött ljus
eller kö inte tom
ställs i kön
Simulering
Trafilkljus
Aktiverad
Start av
simulering
Kör raktfram
start
slut
Aktivera
nytrafikljus
Ny bilgenerator
Grupp 3 Molén - Schuber - Bäckström - Nilsson
3.8
En vector är ungefär som ett fält, skillnaden är att den är dynamisk. Alltså man behöver inte i förväg definiera
hur stor den skall vara utan det bestäms under exekveringen. Till klassen vector finns fördefinierade metoder
som hanterar vectorer. Exempel på detta är b la size(), addElement().
3.13
public class person
{
private String namn;
private String kön;
public static get_Namn();
public static get_Kön();
};
public class anställd extends person
{
private String Titel;
private static get_Titel();
};
public class pensionär extends person
{
private String Hobby;
private static get_Hobby();
};
3.19
public Type slumpa(vector v)
{
int slumpen = randInt(0, (v.size()-1))
Type t = (Type) v.elementAt(slumpen);
return Type;
}
3.26 b
Man allokerar minne vid behov vid exekveringen. I Java så använder man new operatorn, som man då skapar ett
nytt objekt dynamiskt.
import
import
import
import
import
java.io.*;
java.util.*;
java.text.*;
random.*;
sim.*;
class busstur
{
public static buss bussen;
public busstur() {}
public static void main(String args[])
{
Scheduler.reset();
System.out.println("Simulation starts: " +
Scheduler.clock);
Scheduler.activate(bussen=new buss());
Scheduler.run_simulation();
System.out.println("Simulation stops: " +
Scheduler.clock);
}
}
class buss extends Prosess
{
public static Vector[] stationsq=new Vector[10];
public static int index;
static {
index=0;
for(int i=0; i<10; i++)
{
stationsq[i]=new Vector();
}
}
public static Vector getstationsq()
{
return stationsq[index];
}
buss( )
{
}
public void body()
{
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
int antal;
for(index=0; index<9; index++)
{
antal=SimpleRandom.randInt(1,10);
for(int j=0; j<antal; j++)
{
passbuss b=new passbuss(0.25,this);
stationsq[index].addElement(b);
}
}
index=0;
int d;
System.out.println("Bussen startar sin tur " +
nf.format(Scheduler.clock));
d=SimpleRandom.randInt(3,5);
Scheduler.hold(d);
System.out.println("Bussen framme vid staion: " +
(index+1) + " tiden :" +
nf.format(Scheduler.clock));
while(index<9)
{
passbuss p=(passbuss)stationsq[index].elementAt(0);
Scheduler.activate(p);
Scheduler.passivate();
System.out.println("Bussen lämnar staion: " +
(index+1) + " tiden :" +
nf.format(Scheduler.clock));
d=SimpleRandom.randInt(3,5);
System.out.println("Från station "+(index+1)+
" till station " +( index+2 )+
" tar det: " + nf.format(d)+
" minuter");
Scheduler.hold(d);
index++;
}
for(int s=0; s<9; s++)
{
for(int t=0; t<stationsq[s].size();t++)
{
passbuss p=
(passbuss)stationsq[s].elementAt(t);
stationsq[9].addElement(p);
}
}
System.out.println(
"Antal Passagerare vid slutstation: "
+ stationsq[9].size());
System.out.println("Framme efter: " +
(nf.format((Scheduler.clock))));
terminate();
}
}
class passbuss extends Prosess
{
public double pastigstid;
public static buss bus;
public static int ind=0;
public Vector passagerare;
passbuss(double a,buss b)
{
pastigstid=a;
bus=b;
}
public void body()
{
passagerare=bus.getstationsq();
Scheduler.hold(pastigstid);
ind++;
if(ind!=passagerare.size())
{
passbuss p=(passbuss)passagerare.elementAt(ind);
Scheduler.activate(p);
}
if(ind==passagerare.size())
{
ind=0;
Scheduler.activate(bus);
}
terminate();
}
}
F:\sim>java busstur
Simulation starts: 0.0
Bussen startar sin tur 0
Bussen framme vid staion: 1 tiden :3
Bussen lõmnar staion: 1 tiden :4,25
FrÕn station 1 till station 2 tar det: 4 minuter
Bussen lõmnar staion: 2 tiden :8,5
FrÕn station 2 till station 3 tar det: 4 minuter
Bussen lõmnar staion: 3 tiden :13,75
FrÕn station 3 till station 4 tar det: 4 minuter
Bussen lõmnar staion: 4 tiden :19,25
FrÕn station 4 till station 5 tar det: 3 minuter
Bussen lõmnar staion: 5 tiden :24,5
FrÕn station 5 till station 6 tar det: 3 minuter
Bussen lõmnar staion: 6 tiden :27,75
FrÕn station 6 till station 7 tar det: 4 minuter
Bussen lõmnar staion: 7 tiden :34
FrÕn station 7 till station 8 tar det: 5 minuter
Bussen lõmnar staion: 8 tiden :40,25
FrÕn station 8 till station 9 tar det: 3 minuter
Bussen lõmnar staion: 9 tiden :45,5
FrÕn station 9 till station 10 tar det: 3 minuter
Antal Passagerare vid slutstation: 50
Framme efter: 48,5
Simulation done
Simulation stops: 48.5
Flödesdiagram för klassen Buss
Start
klassen busspass
Start
Bussen aktiverar
passagerare
Tar första ur kön vid första
station,
väntar passiv
Passageraren lägger sig i sin
kö och aktiveras
Aktiverar passagerare
Siste man ur kön aktiverar
bussen,
Bussen gör hold i
antalet tidsenheter det tar till
nästa station
Efter 9 stationer
Bussen tömmer alla köer och
lägger in dom i sin egen,
Bussen terminerar
Efter att alla stigit på
Aktiveras bussen
Grupp 1 Aspelin - Lindberg - Ohlsson - Linderkers
/**
* Cell.java
* Uppgift 3.26d
* @author Studenter Högskolan Dalarna Dec 1999
*/
import sim.*;
import random.SimpleRandom;
class Cell extends Prosess
{
// Cellens generations tillhörighet
private int generation;
// cellens livstid tills den delar sig eller terminerar
private double lifeTime;
// Antalet celler som finns i detta prov
public static int number = 0;
// maximala antalet generationer som en cell kan bli för att kunna dela sig:
private final static int genMax = 4;
// Konstruktor
public Cell( int gen )
{
lifeTime = SimpleRandom.normal(4,0.25); // Cellens livstid normalfördelat
generation = gen;
// Cellens generation
number ++;
// Räknar upp antalet celler
}
public void body()
{
// Tills simuleringstiden är slut
while( (Scheduler.clock + lifeTime) < CellSim.closeTime )
{
// kontroll av generation
if( generation < genMax )
{
if( generation==0 )
{
// Väntar slumpad tid för att sedan skapa en ny cell ( placeras i HL )
Scheduler.hold(lifeTime);
// Skapar en ny cell av generation 0
Scheduler.activate( new Cell ( 0 ) );
}
else // ej av generation 0
{
// Väntar slumpad tid för att sedan skapa en ny cell ( placeras i HL )
Scheduler.hold(lifeTime);
// Skapar en ny cell med generationsvärdet plus ett
Scheduler.activate( new Cell( generation + 1 ) );
}
// Skapar och aktiverar en ny cell
Scheduler.activate( new Cell( generation + 1 ) );
// Räknar ned antalet celler
number--;
// cellen "modern" terminerar
terminate();
}
else
// Om cellen inte kan generera några nya celler
{
Scheduler.hold( lifeTime );
number--;
terminate();
//Räknar ned antalet celler
}
}
// Cellen terminerar
terminate();
}
} // end class Cell
/**
* CellReport.java
* Uppgift 3.26d
* @author Studenter Högskolan Dalarna Dec 1999
*/
import sim.*;
import random.*;
class CellReport extends Prosess
{
// Tiden mellan att antalet celler skrivs ut i huvudprogrammet
private double outprintTime;
// Konstruktor
public CellReport(double op)
{
outprintTime = op;
}
public void body()
{
// Genererar första cellen
Scheduler.activate( new Cell(0) );
// Skriver ut antalet celler tills simuleringen är avslutad med tidsintervallet
// outprintTime
while( Scheduler.clock + outprintTime <= CellSim.closeTime )
{
// Rapportören läggs i HL för att skriva ut igen efter en outprintTime
Scheduler.hold( outprintTime );
System.out.println(" Number of cells created: " + Cell.number + "\tat: " + Scheduler.clock);
}
// simuleringen är slut och CellReport termineras
terminate();
}
}
/**
* CellSim.java
* Uppgift 3.26d
* @author Studenter Högskolan Dalarna Dec 1999
*/
import sim.*;
import java.util.*;
class CellSim
{
public static double closeTime; // Total tid för simuleringen
public CellSim()
{ }
static public void main(String argv[])
{
closeTime = 120; // Totala simuleringstiden "hårdkodad"
Scheduler.reset();
System.out.println( "Simulation starts at: " + Scheduler.clock );
Scheduler.activate( new CellReport(3) );
// Skrivs ut var 3:e tidsenhet
Scheduler.run_simulation();
Scheduler.clock = closeTime;
System.out.println( "Simulation stops at: " + Scheduler.clock);
System.out.println( "Number of cells when simulation ends: " + Cell.number);
}
}
// Körningsexempel i filen Körningsex.txt
E:\java CellSim
Simulation starts at: 0.0
Number of cells created: 1 at: 3.0
Number of cells created: 2 at: 6.0
Number of cells created: 4 at: 9.0
Number of cells created: 6 at: 12.0
Number of cells created: 8 at: 15.0
Number of cells created: 16 at: 18.0
Number of cells created: 16 at: 21.0
Number of cells created: 13 at: 24.0
Number of cells created: 16 at: 27.0
Number of cells created: 16 at: 30.0
Number of cells created: 16 at: 33.0
Number of cells created: 13 at: 36.0
Number of cells created: 16 at: 39.0
Number of cells created: 16 at: 42.0
Number of cells created: 15 at: 45.0
Number of cells created: 17 at: 48.0
Number of cells created: 16 at: 51.0
Number of cells created: 16 at: 54.0
Number of cells created: 15 at: 57.0
Number of cells created: 10 at: 60.0
Number of cells created: 16 at: 63.0
Number of cells created: 16 at: 66.0
Number of cells created: 8 at: 69.0
Number of cells created: 16 at: 72.0
Number of cells created: 16 at: 75.0
Number of cells created: 15 at: 78.0
Number of cells created: 17 at: 81.0
Number of cells created: 16 at: 84.0
Number of cells created: 16 at: 87.0
Number of cells created: 21 at: 90.0
Number of cells created: 18 at: 93.0
Number of cells created: 16 at: 96.0
Number of cells created: 16 at: 99.0
Number of cells created: 16 at: 102.0
Number of cells created: 15 at: 105.0
Number of cells created: 16 at: 108.0
Number of cells created: 16 at: 111.0
Number of cells created: 16 at: 114.0
Number of cells created: 16 at: 117.0
Number of cells created: 16 at: 120.0
Number of cells created: 16 at: 123.0
Simulation done
Simulation stops at: 125.0
Number of cells created: 17
3.14
import java.io.*;
class Person
{
private String name;
private Person mother;
private Person father;
public Person(String namn, Person mor, Person far)
{
name=namn;
mother=mor;
father=far;
}
public Person(String namn, Person mor)
{
name=namn;
mother=mor;
}
public Person(String namn)
{
name=namn;
}
public void Report()
{
System.out.println("namn: " + name);
if(mother!=null)
{
System.out.println(name + "s mor har ");
mother.Report();
}
if(father!=null)
{
System.out.println(name + "s far har ");
father.Report();
}
}
}
import java.io.*;
class PersonTest
{
public static void main(String [] args)
{
Person mormor=new Person("Ingeborg");
Person mor=new Person ("Inga",mormor);
Person far=new Person("Inge");
Person kalle=new Person("Kalle",mor,far);
kalle.Report();
}
}
3.18
/** ***********************************************************************
* Queue.java - Inlämningsuppgift 3.18 grupp 1 : Simulering 5p
*
* UPPGIFT 3.18:
* Skriv en funktion i Java som med hjälp av Vector klassen ställer
* ett objekt av en klass "först" i en lista. Exempel på ett anrop: FirstIn(Vara)
* @author Mikael Ohlsson : [email protected]
* D3Pt 1999-12-06
************************************************************************* */
import java.io.*; // System.out
import java.util.Vector; // Vector
/** Exempelklassen Queue en lagerlista.
* För att programmet skall fungera krävs att klassen Vara finns.
* Använder sig av den fördefinierade klassen Vector som finns i
* java.util.Vector
*/
class Queue {
/** Vektorn lager */
private static Vector lager = new Vector(4);
/** Den vitala funktionen som ställer ett objekt av godtycklig typ först
* i listan lager. Enda argumentet är Objektet som skall ner i lagret.
* Funkar om man anropar inom den egna klassen.
*/
public static void FirstIn(Object thing) {
lager.insertElementAt(thing,0); // lägger till först i listan/vektorn
}
/** Den vitala funktionen i annan skepnad där man är tvingad att specificera
* vilken vector som objectet skall läggas in i.
* Tar två argument: Objektet och Vectorn
* Funkar för anrop från klasser utifrån.
*/
public static void FirstIn(Object thing, Vector theQueue) {
theQueue.insertElementAt(thing,0); // lägger till först i listan/vectorn
}
/**
* Test program för FirstIn()
*/
public static void main (String [] a){
lager.addElement(new Vara(2,"Towels"));
System.out.println("\nAdding 2 Towels into lager!");
lager.addElement(new Vara(10,"Soap"));
System.out.println("Adding 10 Soaps into lager! ");
System.out.println("\n Lager now contains:");
System.out.println("Object no 1: " + lager.elementAt(0));
System.out.println("Object no 2: " + lager.elementAt(1));
System.out.println("\nAdding 12 Mugs first in the lager list! ");
FirstIn(new Vara(12, "Mugs"), lager);
System.out.println("\n Lager now contains:\nObject no 1: " + lager.elementAt(0));
System.out.println("Object no 2: " + lager.elementAt(1));
System.out.println("Object no 3: " + lager.elementAt(2));
} /* end main */ } // end class
/** ************ Körnings exempel **************
* Adding 2 Towels into lager!
* Adding 10 Soaps into lager!
*
* Lager now contains:
* Object no 1: Quantity: 2 Specification: Towels
* Object no 2: Quantity: 10 Specification: Soap
*
* Adding 12 Mugs first in the lager list!
*
* Lager now contains:
* Object no 1: Quantity: 12 Specification: Mugs
* Object no 2: Quantity: 2 Specification: Towels
* Object no 3: Quantity: 10 Specification: Soap
*
* Process Exit...
*/
/** ************************************************************
* Vara.java
* Inlämningsuppgift 3.18 grupp 1 : Simulering 5p
*
* Klassen Vara testklass till Queue
*
* @author Mikael Ohlsson : [email protected]
* D3Pt 1999-12-06
************************************************************** */
class Vara {
private int quantity;
private String type;
/** Konstruktor */
public Vara(int q, String arg) {
quantity = q;
type = arg;
}
/** Överlagrad toString() */
public String toString() {
return("Quantity: " + quantity + " Specification: " + type);
}
}
3.7
3.7
Klassen Vector i Java definierar en viss typ av liststrukturer.
Hur ser de ut? Vad är beståndsdelarna och hur är de
organiserade?
Klassen Vector implementerar ett fält av objekt där objekten kan nås via
index. Fältet kan öka och minska i storlek efter behov för att man ska kunna
lägga till och ta bort objekt efter att vektorn skapats.
Medlemsvariabler:
int capacityIncrement
int elementCount
Object [] elementData
- är hur mycket vektorn ska öka med när
storleken behöver ökas.
- är antalet komponenter i vektorn.
- är fältet där vektorns komponenter lagras.
Konstruktorer:
- ger en tom vektor med ett fält för 10
komponenter och standardökningen satt
till noll.
Vector(int initialStorlek)
- ger en tom vektor med ett fält för
initialStorlek komponenter och ökning
noll.
Vector(int initialStorlek,int storleksökning) - ger en tom vektor med ett fält för
initalStorlek komponenter och ökningen
storleksökning.
Vector()
Metoder:
void addElement(Object obj)
void insertElementAt(Object obj, int index)
void setElementAt(Object obj, int index)
void removeElementAt(int index)
Object elementAt(int index)
int Size()
boolean isEmpty()
- lägger till obj sist i fältet.
- sätter in obj på index.
- ersätter objektet på index med obj.
- tar bort objektet på index.
- returnerar objektet på index.
- returnerar antalet objekt som finns i
vektorn.
- returnerar true om vektorn är tom.
Star
t
Initiera och
skriv ut
( aktivera
CellReport )
Skapa en
CellRepor
t
Kör simuleringen
till closeTime
Skriver ut
simulerings
resultatet
Slut
Star
t
Skapa
urcellen
Är
simuleringstiden
slut?
Ja
Terminerar
Nej
Gör hold till
nästa
utskrift
Skriv ut antalet celler
just nu samt tid.
Slu
t
Star
t
Är
simuleringstiden
slut?
Ja
Nej
Ja
Är
generation större
än genMax
?
Nej
Gör hold() på
cellen
Gör hold() på
cellen
Är
cellen av
generation 0
?
Nej
Skapar ny cell av
generation + 1
Ja
Skapar ny cell av
generation 0
Skapar ny cell av
generation + 1
Cellen
terminerar()
Slut