Autor Thema: [MGW] Woche 1: Declarations and Access Control  (Gelesen 3828 mal)

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
[MGW] Woche 1: Declarations and Access Control
« am: 14.09.03 - 15:16:50 »
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
 
« Letzte Änderung: 14.09.03 - 15:56:12 von Axel_Janssen »
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:[MGW] Woche 1: Declarations and Access Control
« Antwort #1 am: 14.09.03 - 22:57:50 »
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]); 
   }
}

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]); 
durch
Code
 int anar[]=new int[2]{1,2,3}; System.out.println(anar[1]); 
ersetzt?
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline qojote

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • I love YaBB 1G - SP1!
Re:[MGW] Woche 1: Declarations and Access Control
« Antwort #2 am: 16.09.03 - 21:59:30 »
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

  • Gast
Re:[MGW] Woche 1: Declarations and Access Control
« Antwort #3 am: 17.09.03 - 08:25:42 »
yup  8)

genau.

Wobei diese Schreibweise sehr ungewöhnlich ist:
Code
 int anar[]=new int[]{1,2,3};
entweder
Code
 int anar[]=new int[3];
oder
Code
 int anar[]={1,2,3};

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]);
Wobei dies ungewöhnlich ist.

Gruß Axel

Axel Janssen temp

  • Gast
Re:[MGW] Woche 1: Declarations and Access Control
« Antwort #4 am: 17.09.03 - 08:51:49 »
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]);

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"}};
durch
Code
String [] laender = {{"Deutschland", "Polen", "Frankreich"}, {"USA", "Mexiko"}, {"China"}};
ersetzt?

Axel Janssen temp

  • Gast
Re:[MGW] Woche 1: Declarations and Access Control
« Antwort #5 am: 17.09.03 - 19:31:03 »
Neue Frage: (Kategorie: Easy)
Code
public class Array1 {
   
   //private static int [] zahlen = new int[3];
   private static int [] zahlen = {2, 3};
   
   public static void main (String args[] ) {
      zahlen = new int [2];
      System.out.println(zahlen[2]); 
   }

}

Was passiert, wenn man diesen code kompiliert und ausführt?
1. Es wird 0 auf der Konsole ausgegeben.
2. Es wird 3 auf der Konsole ausgegeben.
3. Der code läßt sich nicht kompilieren. (compile time exception)
4. Der code läßt sich nicht ausführen (run time exception)
 

Axel Janssen temp

  • Gast
Re:[MGW] Woche 1: Declarations and Access Control
« Antwort #6 am: 17.09.03 - 19:43:59 »
weitere Frage (Kategorie: not that easy):
class I {
  public static void main(String[] args) {
    int[][] a1 = [[1,2],[3,4,5],[6,7,8,9]];
    int[][] a2 = [[1,2],[3,4,5],[6,7,8,9]];
    int[][] a3 = [[1,2],[3,4,5],[6,7,8,9]];
    System.out.print(a1[0][1]+","+a2[1][2]+","+a3[2][3]);
  }
}


What is the result of attempting to compile and run the above program?
a.    Prints: 14
b.    Prints: 16
c.    Prints: 1,5,9
d.    Prints: 2,4,8
e.    Prints: 2,5,9
f.    Compile-time Error.
g.    Runtime Error.
h.    None of the Above.

-------------------------------------------

Kategorie: difficult

Which of the following statements are true?
a.    An abstract method can not be overridden by an abstract method.
b.    An instance method that is not abstract can not be overridden by an abstract method.
c.    An abstract method declaration can not include a throws clause.
d.    The body of an abstract method is represented by a set of empty brackets.
e.    None of the above.

---------------------
Kategorie: difficult
Which of the following modifiers can not be used with the abstract modifier in a method declaration?
a.    final
b.    private
c.    protected
d.    public
e.    static
f.    synchronized
g.    native
h.    strictfp
i.    None of the above.

--------------------------------------------------------------------------------------------
Which of the following statements are true?
a.    A static method is also known as a class method.
b.    A class method is not associated with a particular instance of the class.
c.    The keyword "this" can not be used inside the body of a static method.
d.    The keyword "super" may be used in the body of a static method.
e.    A method that is not static is known as an instance method.
f.    None of the above.


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz