Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
[MGW] Woche 1: Declarations and Access Control
Axel_Janssen:
HbJP = Handbuch für Java-Programmierung (www.javabuch.de)
Sections:
a) Arrays:
Sind natürlich in jeder Programmiersprache wichtig. Werden im HbJP in Kapitel 4.4 behandelt.
b) Declaring classes and variables
Klassen sind bei Java wichtig. Im HdJP wird dieser Stoff (und der Stoff (und der von c) und d)) in den Kaptiteln 7 und 8 behandelt.
Im HdJP wird ein bischen mehr auf die Grundlagen von OO-Theorie eingegangen als bei Marcus Green. Kapitel 7.1 muß nicht unbedingt beim ersten durchlesen verstanden werden. Richtig verstehen tut man OOP sowieso nur in der Praxis. Ich spreche aus eigener Erfahrung, daß Neulinge leicht dazu neigen, sich hier falsche Vorstellungen zu machen, wenn sie viel OOP-Theorie konsumieren aber wenig Praxis haben.
Dinge wie scope von Variablen und v.a. shadowing von Variablen sind wichtige Konzepte. Euch sollten aber diese Phänomene von ähnlichen Phänomenen in LotusScript bekannt sein (im Kontext von Subs, Functions und globalen Variablen).
Da werden natürlich eine Menge an Zugriffs-Modifiern behandelt.
Wichtig ist
- das Verständnis von static (Klassen-)Variablen und Methoden und der Unterschied zu Instanz-Methoden und Variablen.
- die Standard Zugriffs Modifier: public, private, protected und Standard (package scoped).
- Wenn ich eigene Klassen schreibe, verwende ich in der Regel private oder public.
- protected und Standard nur in Fällen, wo ich mindestens 5 Minuten drüber nachgedacht habe und es wirklich gute gründe gibt.
- final und v.a. abstract sind auch noch wichtig. Ist aber schon wieder relativ advanced und es wird in den nächsten Wochen sicher noch genauer drauf eingegangen als dies jetzt möglich ist.
- synchronized, transient, native und volatile benutzt man nur in eng abgegrenzten Spezialfällen und nur da (Thread Programmierung, Serialisierung von Objekten sowie Zugriff auf C/C++ Methoden). Das wird genauer später oder gar nicht in den MGW erklärt. Vergißt das am besten einfach fürs erste.
Zugriffs modifier gibt es auch in LotusScript.
c) The default Constructor
... und Konstruktoren allgemein. Klassen haben einen Konstruktor. Alle. Auch da wo kein Konstruktor im source code steht.
d) Overloading und Overriding
Overloading gibt es auch bei LotusScript Subs und functions. Overriding bei der Klassenprogrammierung in LotusScript. Am besten ihr schreibt euch ein paar Beispiele, um das richtig zu verstehen. Ist aber auch nicht wirklich schwierig. Auf die Konzepte wird noch mal genauer in Woche 6 eingegangen.
Gruß Axel
Axel_Janssen:
Ques: [not that easy]
Was passiert beim kompilieren und ausführen des folgenden codes?
--- Code: ---public class Q {
public static void main(String argv[]){
int anar[]=new int[]{1,2,3}; System.out.println(anar[1]);
}
}
--- Ende Code ---
1) 1 wird auf Bildschirm ausgegeben.
2) Error: Objekt anar wird referenziert bevor es initialisiert wird.
3) 2 wird auf Bildschirm ausgegeben.
4) Error: Größe des Errors muß definiert werden.
Noch mal zu den Regeln: Sollten jetzt Begriffe wie referenziert oder initialisiert nicht klar sein, stellt einfach Fragen.
Zusatzfrage. Was passiert, wenn man die Zeile
--- Code: --- int anar[]=new int[]{1,2,3}; System.out.println(anar[1]);
--- Ende Code ---
durch
--- Code: --- int anar[]=new int[2]{1,2,3}; System.out.println(anar[1]);
--- Ende Code ---
ersetzt?
qojote:
Antwort 3 es wird 2 ausgegeben
Zusatzfrage antwort: ich denke ohne es probiert zu haben das es einen error gibt.
Ich glaube Initialisierung geht nur über anzahl der elemente des arrays oder über die übergabe der werte in geschweiften klammern.
werd ich morgen aber nochmal ausprobieren.
Gruß
qojote
Axel Janssen temp:
yup 8)
genau.
Wobei diese Schreibweise sehr ungewöhnlich ist:
--- Code: --- int anar[]=new int[]{1,2,3};
--- Ende Code ---
entweder
--- Code: --- int anar[]=new int[3];
--- Ende Code ---
oder
--- Code: --- int anar[]={1,2,3};
--- Ende Code ---
Der Index der Arrayelemente beginnt immer bei 0. Deshalb wird bei anar[1] das 2. Element also 2 ausgegeben.
Whitespace (Tabs, Zeilenumbrüche, Leerzeichen) interessiert bei Java nicht. Ein Ausdruck endet mit einem Semikolon. Man kann 2 Ausdrücke in eine Codezeile packen und mit Semikolon trennen:
--- Code: --- int anar[]=new int[2]{1,2,3}; System.out.println(anar[1]);
--- Ende Code ---
Wobei dies ungewöhnlich ist.
Gruß Axel
Axel Janssen temp:
nächste Frage: Kategorie: easy
--- Code: ---String [][] laender = {{"Deutschland", "Polen", "Frankreich"}, {"USA", "Mexiko"}, {"China"}};
for (int i=0; i < laender.length; i++) {
for (int j = 0; j < laender[i].length; j++) {
System.out.println("laender[" + i + "][" + j + "]=" + laender[i][j]);
}
}
System.out.println(laender[2][0]);
--- Ende Code ---
Was passiert, wenn man diesen code kompiliert und ausführt (innerhalb einer main-Methode).
1. Fehler beim Kompileren: Die Subarrays sind unterschiedlich groß
2. Fehler beim Ausführen: Die Subarrays sind unterschiedlich groß
3. zeigt die Elemente des Arrays an.
Zusatzfrage1: Gibt es ein Hinweis im code dafür, daß Arrays Objekte sind?
Zusatzfrage2: Was passiert, wenn man die Zeile
--- Code: ---String [][] laender = {{"Deutschland", "Polen", "Frankreich"}, {"USA", "Mexiko"}, {"China"}};
--- Ende Code ---
durch
--- Code: ---String [] laender = {{"Deutschland", "Polen", "Frankreich"}, {"USA", "Mexiko"}, {"China"}};
--- Ende Code ---
ersetzt?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln