Ramovi za slike (objekti) – rešenje

Projekat ima dve klase (dva fajla): glavnu klasu RamoviZaSlike sa metodom main i klasu Ram, koja predstavlja pravougaoni ram sa podacima (atributima): dužinom, širinom i površinom.

Klasa Ram

Klasa samo opisuje šta svaki ram „ima“ – tri realna broja:

// Fajl Ram.java
// Klasa Ram opisuje jedan pravougaoni ram
public class Ram {
    double a; // dužina u mm
    double b; // širina u mm
    double P; // površina u mm^2
}

Glavna klasa

U glavnoj klasi se prave dva objekta, unose se dužine i širine ramova, računaju površine i ispisuju na ekranu:

// Fajl RamoviZaSlike.java
import java.util.Scanner;

public class RamoviZaSlike {

    public static void main(String[] args) {
        Ram ram1 = new Ram(); // kreira objekat ram1
        Ram ram2 = new Ram(); // kreira objekat ram2
        Scanner ucitavac = new Scanner(System.in); // objekat za učitavanje

        System.out.println("Unesi duzinu i sirinu rama 1 u mm");
        ram1.a = ucitavac.nextDouble();
        ram1.b = ucitavac.nextDouble();

        System.out.println("Unesi duzinu i sirinu rama 2 u mm");
        ram2.a = ucitavac.nextDouble();
        ram2.b = ucitavac.nextDouble();

        // Izračunavanje površina – svaki ram ima svoje a, b i P
        ram1.P = ram1.a * ram1.b;
        ram2.P = ram2.a * ram2.b;

        // Ispis rezultata
        System.out.println("Povrsina prvog rama je " + ram1.P + " mm^2");
        System.out.println("Povrsina drugog rama je " + ram2.P + " mm^2");
    }
}

Primer izvršavanja

Ulaz

620 577.35
400 300

Izlaz (poslednja dva reda)

Povrsina prvog rama je 357957.0 mm^2
Povrsina drugog rama je 120000.0 mm^2
Ispravljena greška: u kodu sa stare slike površina drugog rama računala se kao ram1.P = ram1.a * ram1.b; (red je prepisan od prvog rama), pa je program ispisivao pogrešnu površinu drugog rama. Ispravno je ram2.P = ram2.a * ram2.b;.
Napomena: obe klase mogu biti i u jednom fajlu RamoviZaSlike.java – tada se ispred class Ram ne piše public.