# Ohmsches Gesetz



## Akay (28. Dez 2017)

Hey ich kann diese Code irgendwie nicht ausführen.
Ich bin blutiger Java Anfänger aber laut Eclipse sind keine Fehler mehr vorhanden.



```
public class OhmscheKlasse {
private double r1;
private double r2;



public OhmscheKlasse(double r1, double r2) {
    if (r1 < 0) {
        throw new IllegalArgumentException(" R darf nicht negativ sein.");
        } //Fehlermeldung
    if (r2 < 0) {
        throw new IllegalArgumentException(" R darf nicht negativ sein.");
        } //Fehlermeldung
    // This-Referenz
    this.r1 = r1 ;
    this.r2 = r2 ;
   
    }
double widerstandSerienschaltung(double r) {
    if ( r1+r2 > 0) {
        throw new IllegalArgumentException(" darf nicht negativ sein.");
    }
    return r1+r2;
}

}
```


----------



## Javinner (28. Dez 2017)

@Akay
Im Konstruktor werden den Instanzvariablen die Parameterliste übergeben,
die Prüfung auf Null erfolgt dann in den jeweiligen Methoden.

```
public OhmischeKlasse(wert a, wert b)
{
    this.wertA = a;
    this.wertB = b;
}
```

edit:
in der Methode widerstandSerienschaltung(double r)
wird der übergebene Parameter nicht verwendet.


----------



## mrBrown (28. Dez 2017)

Akay hat gesagt.:


> Hey ich kann diese Code irgendwie nicht ausführen.


Ausgehend von der Fehlermeldung: hast du den Computer eingeschaltet?

Der Code ist wunderbar ausführbar, und macht genau das was er machen soll (wobei das nicht unbedingt sinnvoll ist..)


----------



## mrBrown (28. Dez 2017)

Javinner hat gesagt.:


> Im Konstruktor werden den Instanzvariablen die Parameterliste übergeben,
> die Prüfung auf Null erfolgt dann in den jeweiligen Methoden.


Sinnvoller ist es, die Prüfung im Konstruktor vorzunehmen - danach sollte sich das Objekt schließlich in einem validen Zustand befinden.


----------



## Javinner (28. Dez 2017)

@mrBrown
Dann aber in einer externen Methode, um den Konstruktor übersichtlicher zu gestalten und vor allem weniger Code zu produzieren (gerade hier kommt es wie gerufen).


----------



## JCODA (28. Dez 2017)

wie lautet denn die zugehörige main-Methode?


----------



## tommysenf (28. Dez 2017)

Javinner hat gesagt.:


> Im Konstruktor werden den Instanzvariablen die Parameterliste übergeben,
> die Prüfung auf Null erfolgt dann in den jeweiligen Methoden.


Sinn eines Konstruktors ist es sicherzustellen das ein valides Objekt erzeugt wird. So wie du es vorschlägst sollte man es genau nicht machen.


----------



## Javinner (28. Dez 2017)

@tommysenf 
Habe es getestet, dank @mrBrown  sehe ich es ein. Nach wie vor der Meinung, man sollte es in einer externen Methode testen, um den Konstruktor übersichtlich zu halten:

```
public OhmischeKlasse(double a, double b)
{
    check(a);
    check(b);
    this.a = a;
    this.b = b;
}
```


----------



## mrBrown (28. Dez 2017)

Javinner hat gesagt.:


> Nach wie vor der Meinung, man sollte es in einer externen Methode testen, um den Konstruktor übersichtlich zu halten:


Das ist natürlich sinnvoll 
Die Methode kann man dann noch den entsprechenden Paramater zurückgeben lassen, dann lässt es sich analog zu z.B. Objects.requireNonNull verwenden.


----------



## Javinner (28. Dez 2017)

@mrBrown 
`Objects.requireNonNull` Dank @Flown weiß ich auch, worum es bei dieser Methode geht  Vielen Dank für die Lehrstunde, war hilfreich!


----------

