OOP 2: Kroppar



Klassen Kropp beskriver en liksidig tredimentionell objekt, dess volym, och ytarea. då vi här har även velat beskriva tre specialfall, Kub, Klot, och en liksidig Pyramid, har vi gjort dessa som underklasser till Kropp. Kropp innehåller funktioner för utskrift av objekttyp, sidlängd, area och volym, som vid behov skuggas av underklasserna. Varje underklass har egna funktioner för beräkning av dess volym och yta, då formlerna skiljer sig från varandra markant. Klotens diameter behandlas som en "sida" som är lika lång i alla riktningar, och radien beräknas från den. Pyramiden har en triangel som bas, och alla dess sidor är lika långa. I slutet finns en klass som testar våra klasser, genom att skapa en ny kropp (klot, kub, pyramid) och skriva ut information. Värt att tillägga att varje klass måste sparas till en egen fil vid kompillering

import java.io.*;

public class Kropp{  
   public double l; //sidlängd
   public double v; //volym
   public double y; //yta
   public double vol(){
      return v;
   }
   public double yta(){
      return y;
   }
   public void print(){
      printType();
      printDim();
      System.out.println("Volym: "+vol()+" volym enheter");
      System.out.println("Ytarea: "+yta()+" area enheter");
      System.out.println();
   }
   public void printDim(){
      System.out.println("Sidlängd: "+l+" längd enheter");
   }
   public void printType(){
      System.out.println("Tredimensionell kropp");
   }
}

// underklass kub
public class Kub extends Kropp{
   public double vol(){
      v=l*l*l;
      return v;
   }
   public double yta(){
      y=l*l*6;
      return y;
   }
   public Kub(double sidlangd){
      l=sidlangd;
   }
   public void printType(){
      System.out.println("Kub");
   }

}

//klot är ett specialfall av en 3D kropp med samma "längd", diameter, i alla riktningar
public class Klot extends Kropp{
   public double r;
   public double vol(){
      v=4*Math.PI*r*r*r/3;
      return v;
   }
   public double yta(){
      y=4*Math.PI*r*r;
      return y;
   }
   public Klot(double diameter){
      l=diameter;
      r=l/2; //radien hälften av diametern
   }
   public void printDim(){
      System.out.println("Radie: "+r+" längd enheter");
   }
   public void printType(){
      System.out.println("Klot");
   }
}


//En liksidig pyramid med en triangel som bas, alla trianglar är liksidiga
public class Pyramid extends Kropp{
   public double vol(){
      v=l*l*l*Math.sqrt(2)/12; //från beta s.72
      return v;
   }
   public double yta(){
      y=l*l*Math.sqrt(3); //från beta s.72
      return y;
   }
   public Pyramid(double sidlangd){
      l=sidlangd; 
   }
   public void printType(){
      System.out.println("Liksidig pyramid");
   }

}
// en klass som testar klasserna
public class Test{
public static void main(String[] args){
   Klot x=new Klot(5); //en klot x med diametern 5
   x.print();
   Kub y=new Kub(3);
   y.print();
   Pyramid z=new Pyramid(2);
   z.print();
}
}



Tillbaks till huvudsidan

email: Alireza.Niai_nouri.2077@student.uu.se