Last active
May 27, 2018 22:58
-
-
Save mhazim2/1109ba0606a4d45f253a2c900edc6ef7 to your computer and use it in GitHub Desktop.
49. OOP14 : Class dalam JAVA
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Ruang2D.java | |
// Menggunakan class Pair yang sudah dibuat sebelumnya | |
import java.io.*; | |
class Pair<A,B> { // Class Pair dengan templating tipe data A dan B, Class adalah blueprint/cetakan untuk objek | |
private A first; // atribut pasangan pertama | |
private B second; // atribut pasangan kedua | |
public Pair(A first, B second) { // Constructor dari Pair, constructor adalah method yang pertama kali dijalankan pada saat sebuah objek pertama kali diciptakan | |
this.first = first; // penggunaan this disini untuk membedakan variabel first dari atribut dan variable first dari parameter | |
this.second = second; // penggunaan this disini untuk membedakan variabel second dari atribut dan variable second dari parameter | |
} | |
public A getFirst() { // Getter dari atribut first, getter adalah sebuah method yang digunakan untuk pengambilan nilai dari suatu object atau attribute yang sudah berisi nilai | |
return first; | |
} | |
public void setFirst(A first) { // Setter dari atribut first, setter adalah sebuah method yang digunakan untuk memberikan nilai pada suatu attirubte | |
this.first = first; | |
} | |
public B getSecond() { // Getter dari atribut second, getter adalah sebuah method yang digunakan untuk pengambilan nilai dari suatu object atau attribute yang sudah berisi nilai | |
return second; | |
} | |
public void setSecond(B second) { // Setter dari atribut second, setter adalah sebuah method yang digunakan untuk memberikan nilai pada suatu attirubte | |
this.second = second; | |
} | |
} | |
class Segitiga { // Membuat class Segitiga | |
protected Pair<Double,Double> t1; // Membuat objek pair untuk menyimpan kordinat | |
protected Pair<Double,Double> t2; // Membuat objek pair untuk menyimpan kordinat | |
protected Pair<Double,Double> t3; // Membuat objek pair untuk menyimpan kordinat | |
public Segitiga(Double x1, Double y1, Double x2, Double y2, Double x3, Double y3) { // Constructor dari Segitiga, constructor adalah method yang pertama kali dijalankan pada saat sebuah objek pertama kali diciptakan | |
this.t1 = new Pair<Double,Double>(x1,y1); | |
this.t2 = new Pair<Double,Double>(x2,y2); | |
this.t3 = new Pair<Double,Double>(x3,y3); | |
} | |
public double luas() { // Method untuk menghitung luas | |
// Rumus menghitung luas dari kordinat yang diketahui | |
double a = t2.getFirst()*t3.getSecond()+t1.getFirst()*t2.getSecond()+t3.getFirst()*t1.getSecond(); | |
double b = t2.getFirst()*t1.getSecond()+t3.getFirst()*t2.getSecond()+t1.getFirst()*t3.getSecond(); | |
return Math.abs(a-b)/2.0; | |
} | |
} | |
class Lingkaran { // Membuat class Lingkaran | |
protected Pair<Double,Double> pusat; // Membuat objek pair untuk menyimpan kordinat titik pusat | |
protected Double radius; // variable jari-jari lingkaran | |
public Lingkaran(Double x, Double y, Double radius) { // Constructor dari Lingkaran, constructor adalah method yang pertama kali dijalankan pada saat sebuah objek pertama kali diciptakan | |
this.pusat = new Pair<Double, Double>(x, y); | |
this.radius = radius; | |
} | |
public double luas(){ // Method untuk menghitung luas | |
return 3.14*radius*radius; | |
} | |
} | |
public class Ruang2D{ // class utama | |
public static void main(String[] args){ // fungsi main di java | |
BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); // Membuat objek dataIn dari class BufferedReader untuk membaca inputan dari pengguna | |
String inp = ""; | |
String delim = "[ ]+"; // string untuk pemisah | |
String[] temp; | |
Segitiga[] segitiga = new Segitiga[100]; // membuat array dari objek segitiga | |
Lingkaran[] lingkaran = new Lingkaran[100]; // membuat array dari objek lingkaran | |
try { | |
inp = dataIn.readLine(); // objek dataIn membaca inputan satu baris | |
String[] nData = inp.split(delim); // men-split string berdasarkan spasi | |
int n = Integer.parseInt(nData[0]); // mengkonversi string pada variable nData menjadi integer | |
Double sumLuasLingkaran = 0.0; | |
Double sumLuasSegitiga = 0.0; | |
for (int i = 0; i<n; i++){ // loop inputan selanjutnya | |
inp = dataIn.readLine(); // objek dataIn membaca inputan satu baris | |
String[] data = inp.split(delim); // men-split string berdasarkan spasi | |
Double x = Double.parseDouble(data[0]); // mengkonversi string dari variable data index ke-0 ke double | |
Double y = Double.parseDouble(data[1]); // mengkonversi string dari variable data index ke-1 ke double | |
Double r = Double.parseDouble(data[2]); // mengkonversi string dari variable data index ke-2 ke double | |
lingkaran[i] = new Lingkaran(x, y, r); // membuat objek lingkaran dari class Lingkaran dan memasukkan variable ke parameter x, y, r untuk diinisiasi | |
sumLuasLingkaran = sumLuasLingkaran + lingkaran[i].luas(); // menjumlah luas lingkaran | |
} | |
int m = Integer.parseInt(nData[1]); // mengkonversi string pada variable nData menjadi integer | |
for (int i = 0; i<m; i++){ // loop inputnan selanjutnya | |
inp = dataIn.readLine(); // objek dataIn membaca inputan satu baris | |
String[] data = inp.split(delim); // men-split string berdasarkan spasi | |
Double x1 = Double.parseDouble(data[0]); // mengkonversi string dari variable data index ke-0 ke double | |
Double y1 = Double.parseDouble(data[1]); // mengkonversi string dari variable data index ke-1 ke double | |
Double x2 = Double.parseDouble(data[2]); // mengkonversi string dari variable data index ke-2 ke double | |
Double y2 = Double.parseDouble(data[3]); // mengkonversi string dari variable data index ke-3 ke double | |
Double x3 = Double.parseDouble(data[4]); // mengkonversi string dari variable data index ke-4 ke double | |
Double y3 = Double.parseDouble(data[5]); // mengkonversi string dari variable data index ke-5 ke double | |
segitiga[i] = new Segitiga(x1, y1, x2, y2, x3, y3); // membuat objek lingkaran dari class Lingkaran dan memasukkan variable ke parameter untuk diinisiasi | |
sumLuasSegitiga = sumLuasSegitiga + segitiga[i].luas(); // menjumlah luas segitiga | |
} | |
Double rataanLuasLingkaran = sumLuasLingkaran/(1.0*n); // menghitung rataan luas lingkaran | |
Double rataanLuasSegitiga = sumLuasSegitiga/(1.0*m); // menghitung rataan luas segitiga | |
int nLingkaranDibawahRataan = 0; | |
int mSegitigaDibawahRataan = 0; | |
for (int i = 0; i<n; i++){ // menghitung banyaknya luas lingkaran yang lebih kecil dari rataanya | |
if (lingkaran[i].luas()<rataanLuasLingkaran){ | |
nLingkaranDibawahRataan++; | |
} | |
} | |
for (int i = 0; i<m; i++){ // menghitung banyaknya luas segitiga yang lebih kecil dari rataanya | |
if (segitiga[i].luas()<rataanLuasSegitiga){ | |
mSegitigaDibawahRataan++; | |
} | |
} | |
System.out.format("Lingkaran %.2f %d %d\n", rataanLuasLingkaran, nLingkaranDibawahRataan, n-nLingkaranDibawahRataan); | |
System.out.format("Segitiga %.2f %d %d\n", rataanLuasSegitiga, mSegitigaDibawahRataan, m-mSegitigaDibawahRataan); | |
} catch(IOException e) { | |
System.out.println("Error!"); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment