# Hilfe!!! Muss heute abgeben:(



## Illy (19. Jun 2009)

Kann mir bitte jemand bei der folgende Aufgabe helfen. Ich hocke schon seit 5 Tagen daran und muss heute um 16 Uhr abgeben. War leider die Woche in der die Vorlesung dazu kam krank und habe mir es etliche mal durchgelesen und komme nicht weiter. Wäre um jede Hilfe, so klein sie auch sein möge, sehr dankbar.

Soweit bin ich gekommen

```
import java.awt.Color;

public class MobilTelefon {

private String hersteller;
private String bezeichnung;
private String imei;
private Color farbe;
private boolean qcApproved;

public MobilTelefon(){
this.hersteller = "Samsung";
this.bezeichnung = "SG 500";
setIMEI ["000000000000000"];
this.farbe = Color.blue;
}

public MobilTelefon(String hersteller, String bezeichnung, Color farbe,
String imei) {
this.hersteller = hersteller;
this.bezeichnung = bezeichnung;
this.farbe = farbe;
setIMEI(imei);
}

public static String getIMEI() {

return imei;
}

private void setIMEI(String imei) {
if (checkIMEI(imei) == true) {
this.imei = imei;
this.qcApproved = true;
} else {
this.qcApproved = false;

}
}

public static boolean checkIMEI(String imei){
if (imei.length == 15){
}
if (){

}else{
this.qcApproved = false;
}
return qcApproved;
}
}
```
Mobiltelefon

-hersteller:String
-bezeichnung: String
-imei:String
-farbe:Color
-qcApproved: boolean

+MobilTelfon()
+MobilTelefon(hersteller:String, beteichnung:String, farbe:Color, imei:String)
+getIMEI():String
-setIMEI(imei:String)
-checkIMEI(imei:String):boolean
-querSumme(zahl:int):int
+rufeAn(nr : TelefonNummer, nachricht : String)
+toString(): String


TelefonNummer

-laendercode:int
-vorwahl:int
-nummer:int

+TelefonNummer(laendercode:int, vorwahl:int, nummer:int)
+getLaendercode():int
+setLaendercode(laendercode:int)
+getVorwahl():int
+setVorwahl(vorwahl:int)
+getNummer() :int
setNummer(nummer:int)
toString():String


Hier die Augabenstellung dazu:

1. Der Default-Konstruktor von MobilTelefon soll die Attribute mit Standardwerten
versehen, wahrend der Parameter-Konstruktor die ubergebenen Parameter
den jeweiligen Attributen zuweist. Verwenden Sie zum Setzen der imei die entsprechende Methode!

2. Die IMEI ist eine 15-stellige Nummer, die ein Telefon identiziert. Sie besteht aus
einer 8-stelligen TAC (type approval code), einer 6-stelligen SNR (serial number)
und einer Prufzier. Die IMEI soll nachtraglich nicht verandert werden konnen,
weswegen nur getIMEI() von außen aufrufbar ist und die gesetzte imei als String
zuruckgibt. Die Methode setIMEI(), die von den Konstruktoren verwendet wird,
soll eine IMEI nur dann setzen, wenn sie von checkIMEI() als korrekt eingestuft
worden ist. In diesem Fall wird auch das Attribut qcApproved auf true gesetzt.
Im Fehlerfall ist das MobilTelefon defekt und qcApproved wird false.

3. Die Methode checkIMEI() uberpruft die ubergebene IMEI auf Korrektheit. Damit
eine IMEI korrekt ist, muss sie 2 Bedingungen erfullen:
(a) Die IMEI muss aus genau 15 Zeichen bestehen.
(b) Die letzte Zier ist eine Prufzier, die passend zu den vorherigen 14 Ziern
sein muss.

Der Algorithmus zur Berechnung der Prufzier funktioniert folgendermaßen, ausgehend
von einer 14-stelligen IMEI ohne die Prufzier:

- Jede Zier der 14-stelligen IMEI an einer ungeraden Stelle wird verdoppelt.
- Die dadurch entstandenen Zahlen werden wieder ziernweise aufaddiert. Bei
Zahlen >= 10 muss also erst eine Quersumme gebildet werden.
- Endet die im vorherigen Schritt entstandene Summe mit einer 0, ist die
Prufzier auch 0. Endet sie mit einer anderen Zahl, wird die Summe von der
nachst groeren Zahl abgezogen, die mit 0 endet.

Zur Verdeutlichung ein Beispiel:
1 2 3 4 5 6 7 8 1 2 3 4 5 6
1 4 3 8 5 12 7 16 1 4 3 8 5 12

Dies ist Schritt eins des Algorithmus. Im zweiten Schritt werden die Einzelziern
aufaddiert.
1 + 4 + 3 + 8 + 5 + (1 + 2) + 7 + (1 + 6) + 1 + 4 + 3 + 8 + 5 + (1 + 2)
= 62

Achten Sie dabei besonders auf die fettgedruckten Additionen. Zur Berechnung
der Einzelziernsumme ist es hilfreich, die Quersummenberechnung in eine Methode
querSumme() auszulagern.

Als letzten Schritt muss die 62 von der nachst groeren Zahl mit 0 am Ende
abgezogen werden, d.h. in diesem Fall ist die Prufzier 70-62 = 8
Hinweis: Verwenden Sie dazu den modulo-Operator % oder nutzen Sie aus, dass
zwei int-Werte miteinander dividiert wieder einen int-Wert ergeben.
Stimmt die berechnete Prufzier mit der letzten Zier der ubergebenen IMEI
uberein, ist die IMEI korrekt. Stimmt sie nicht uberein, ist sie nicht korrekt.

4. In den Methoden rufeAn() und sendeSMS() soll neben der Art der ausgehenden
Nachricht (SMS oder Anruf) jeweils die Telefonnummer auf stdout ausgegeben
werden. Geben Sie bei der Methode sendeSMS() zusatzlich die ubergebene Nachricht
aus. Beide Methoden sollen vor der Ausgabe uberprufen, ob qcApproved auf
true gesetzt ist. Ist das Attribut false, soll stattdessen ausgegeben werden, dass
das Telefon nicht funktionsfahig ist.

5. Die Methode toString() soll uberschrieben werden und den Hersteller, die Bezeichnung,
die Farbe und die IMEI des Mobiltelefons ausgeben.

6. Zur Benutzung des Mobiltelefons fehlt noch die Implementierung der Methoden
in der Klasse TelefonNummer, die Telefonnummern nach dem Muster Ländercode
+ Vorwahl + Nummer abspeichern können soll. Der Parameter-Konstruktor soll
wie gehabt die übergebenen Parameter den entsprechenden Attributen zuweisen.
Zu jedem Attribut soll es außerdem eine set- und get-Methode geben, mit denen
die Attribute gesetzt und ausgelesen werden können. Die Methode toString()
soll wiederum überschrieben werden und die Telefonnummer in folgender Form
zurückgeben:
+<laendercode><vorwahl><nummer>


----------



## Guybrush Threepwood (19. Jun 2009)

Naja, Du hast ja noch ca. 4 Stunden für die Lösung. Also halte Dich ran.


----------



## Gonzo17 (19. Jun 2009)

Ist doch eh das falsche Unterforum?
Und ehrlich gesagt ist das schon ein guter Brocken an Text. ^^ Vielleicht sagst du, was du schon hast und was nicht, weil alle 7 Aufgaben wird dir hier keiner machen. Gezielte Fragestellung, dann kriegste auch ne konkrete Antwort.


----------



## Illy (19. Jun 2009)

ja die aufgabe ist wirklich in 10-15 min bearbeitet wenn man das versteht, sind ja nur kleine teilaufgaben, aber ich verstehe sie leider nicht zu 100%.
wenn ich zumindest den algorithmus, also aufgabe 4 hätte, würde das mich schon ein ganzes stückchen weiterbringen.
naja ich tu was ich kann...

PS: Ich brauch nur die Teilaufgaben 3-5  1 und 2 hab ich ja fast und die 6. krieg ich auch glaub ich alleine hin wenn ich die anderen habe ;-)


----------

