diff --git a/Doc/Sd1/gettingStarted.xml b/Doc/Sd1/gettingStarted.xml index d57d6efc2baba545e9dbfacbad47eb1d84277121..cc357991b032d0e8f58b9ce23eb3991b356bd3fd 100644 --- a/Doc/Sd1/gettingStarted.xml +++ b/Doc/Sd1/gettingStarted.xml @@ -1188,7 +1188,6 @@ public class App { <filename>settings.xml</filename>:</para> <programlisting language="xml"><settings ...> - <servers> ... </servers> <mirrors> @@ -1201,9 +1200,7 @@ public class App { </mirrors> <profiles> ... </profiles> - <activeProfiles> ... </activeProfiles> - </settings></programlisting> </section> diff --git a/Doc/Sd1/objectsClasses.xml b/Doc/Sd1/objectsClasses.xml index fe50a9fc961e2374586e3ca51524c513451c779c..527ada3888615123aca6732281983859dda4ac10 100644 --- a/Doc/Sd1/objectsClasses.xml +++ b/Doc/Sd1/objectsClasses.xml @@ -1378,201 +1378,6 @@ public void writeSvg() { </qandadiv> </qandaset> - <qandaset defaultlabel="qanda" xml:id="sd1_qanda_defineStringClass"> - <title>Your personal <classname>String</classname> class</title> - - <qandadiv> - <qandaentry> - <question> - <para>This exercise is about using packages for resolving class - name clashes.</para> - - <para>Define your own <classname>String</classname> class having a - suitable constructor and a <methodname>public String - toString()</methodname> method allowing for the following - snippet:</para> - - <programlisting language="java">public static void main(...) { - String john = new String("John"); - System.out.println("Name: " + john); - System.out.println(john.sayHello()); -}</programlisting> - - <para>The expected output reads:</para> - - <screen>Name: John -Hello 'John'</screen> - - <tip> - <orderedlist> - <listitem> - <para>Use a <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> - instance variable inside your private - <classname>String</classname> class.</para> - </listitem> - - <listitem> - <para>Your class' constructor is bound to accept standard - <xref linkend="glo_Java"/> string literals. Using <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">java.lang.String</classname> - internally requires a fully qualified class name.</para> - </listitem> - </orderedlist> - </tip> - </question> - - <answer> - <para>We implement our private <classname>String</classname> class - in a package - <package>de.hdm_stuttgart.mi.sd1.tooling</package>:</para> - - <programlisting language="java">package de.hdm_stuttgart.mi.sd1.tooling; - -public class String { <co linkends="sd1_callout_createStringClass-1.2" - xml:id="sd1_callout_createStringClass-1.3-co"/> - - final java.lang.String s; <co linkends="sd1_callout_createStringClass-2.2" - xml:id="sd1_callout_createStringClass-2.2-co"/> - - public String(final java.lang.String s <co - linkends="sd1_callout_createStringClass-3.2" - xml:id="sd1_callout_createStringClass-3.2-co"/>) { - this.s = s; - } - - public java.lang.String <co linkends="sd1_callout_createStringClass-4" - xml:id="sd1_callout_createStringClass-4-co"/> sayHello() { - return "Hello '" + s + "', good morning!"; - } -}</programlisting> - - <calloutlist> - <callout arearefs="sd1_callout_createStringClass-1.3-co" - xml:id="sd1_callout_createStringClass-1.2"> - <para>Shadowing <xref linkend="glo_Java"/> <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>.</para> - </callout> - - <callout arearefs="sd1_callout_createStringClass-2.2-co" - xml:id="sd1_callout_createStringClass-2.2"> - <para>Using a standard <xref linkend="glo_Java"/> <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> - instance internally. Fully qualified class name required - resolving potential name clash.</para> - </callout> - - <callout arearefs="sd1_callout_createStringClass-3.2-co" - xml:id="sd1_callout_createStringClass-3.2"> - <para>Our constructor also accepts a standard <xref - linkend="glo_Java"/> <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> - instance.</para> - </callout> - - <callout arearefs="sd1_callout_createStringClass-4-co" - xml:id="sd1_callout_createStringClass-4"> - <para>Returning a <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> - instance.</para> - </callout> - </calloutlist> - - <para>There are basically two ways using - <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname> - and <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> - in the same scope:</para> - - <glosslist> - <glossentry> - <glossterm>Fully qualify <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>:</glossterm> - - <glossdef> - <programlisting language="java">package de.hdm_stuttgart.mi; - -import de.hdm_stuttgart.mi.sd1.tooling.String; - -public class Main { - - public static void main(java.lang.String <co - linkends="sd1_callout_createStringAnswer1-1" - xml:id="sd1_callout_createStringAnswer1-1-co"/> [] args) { - String <co linkends="sd1_callout_createStringAnswer1-2" - xml:id="sd1_callout_createStringAnswer1-2-co"/> s = new String("John"); - System.out.println(s.sayHello()); - } -}</programlisting> - - <calloutlist> - <callout arearefs="sd1_callout_createStringAnswer1-1-co" - xml:id="sd1_callout_createStringAnswer1-1"> - <para>Qualifying is required to avoid shadowing by - <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname>.</para> - </callout> - - <callout arearefs="sd1_callout_createStringAnswer1-2-co" - xml:id="sd1_callout_createStringAnswer1-2"> - <para>Due to the <code language="java">import</code> - statement this is actually - <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname>.</para> - </callout> - </calloutlist> - </glossdef> - </glossentry> - - <glossentry> - <glossterm>Fully qualify - <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname>:</glossterm> - - <glossdef> - <programlisting language="java">package de.hdm_stuttgart.mi; - -public class Main { - - public static void main(String <co - linkends="sd1_callout_createStringAnswer2-1" - xml:id="sd1_callout_createStringAnswer2-1-co"/> [] args) { - de.hdm_stuttgart.mi.sd1.tooling.String <co - linkends="sd1_callout_createStringAnswer2-2" - xml:id="sd1_callout_createStringAnswer2-2-co"/> s = - new de.hdm_stuttgart.mi.sd1.tooling.String("John"); - System.out.println(s.sayHello()); - } -}</programlisting> - - <calloutlist> - <callout arearefs="sd1_callout_createStringAnswer2-1-co" - xml:id="sd1_callout_createStringAnswer2-1"> - <para>A <xref linkend="glo_Java"/> standard <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> - instance.</para> - </callout> - - <callout arearefs="sd1_callout_createStringAnswer2-2-co" - xml:id="sd1_callout_createStringAnswer2-2"> - <para>In order not to override the implicit import - java.lang.String we have to fully qualify our own - <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname> - class.</para> - </callout> - </calloutlist> - </glossdef> - </glossentry> - </glosslist> - </answer> - </qandaentry> - </qandadiv> - </qandaset> - <section xml:id="sd1_sect_accessControl"> <title>Encapsulation and access control</title> @@ -3218,6 +3023,202 @@ public class Driver { </qandaentry> </qandadiv> </qandaset> + + <qandaset defaultlabel="qanda" xml:id="sd1_qanda_defineStringClass"> + <title>Your personal <classname>String</classname> class</title> + + <qandadiv> + <qandaentry> + <question> + <para>This exercise is about using packages for resolving class + name clashes.</para> + + <para>Define your own <classname>String</classname> class having + a suitable constructor and a <methodname>public String + toString()</methodname> method allowing for the following + snippet:</para> + + <programlisting language="java">public static void main(...) { + String john = new String("John"); + System.out.println("Name: " + john); + System.out.println(john.sayHello()); +}</programlisting> + + <para>The expected output reads:</para> + + <screen>Name: John +Hello 'John'</screen> + + <tip> + <orderedlist> + <listitem> + <para>Use a <package + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + instance variable inside your private + <classname>String</classname> class.</para> + </listitem> + + <listitem> + <para>Your class' constructor is bound to accept standard + <xref linkend="glo_Java"/> string literals. Using + <classname + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">java.lang.String</classname> + internally requires a fully qualified class name.</para> + </listitem> + </orderedlist> + </tip> + </question> + + <answer> + <para>We implement our private <classname>String</classname> + class in a package + <package>de.hdm_stuttgart.mi.sd1.tooling</package>:</para> + + <programlisting language="java">package de.hdm_stuttgart.mi.sd1.tooling; + +public class String { <co linkends="sd1_callout_createStringClass-1.2" + xml:id="sd1_callout_createStringClass-1.3-co"/> + + final java.lang.String s; <co linkends="sd1_callout_createStringClass-2.2" + xml:id="sd1_callout_createStringClass-2.2-co"/> + + public String(final java.lang.String s <co + linkends="sd1_callout_createStringClass-3.2" + xml:id="sd1_callout_createStringClass-3.2-co"/>) { + this.s = s; + } + + public java.lang.String <co linkends="sd1_callout_createStringClass-4" + xml:id="sd1_callout_createStringClass-4-co"/> sayHello() { + return "Hello '" + s + "', good morning!"; + } +}</programlisting> + + <calloutlist> + <callout arearefs="sd1_callout_createStringClass-1.3-co" + xml:id="sd1_callout_createStringClass-1.2"> + <para>Shadowing <xref linkend="glo_Java"/> <package + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>.</para> + </callout> + + <callout arearefs="sd1_callout_createStringClass-2.2-co" + xml:id="sd1_callout_createStringClass-2.2"> + <para>Using a standard <xref linkend="glo_Java"/> <package + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + instance internally. Fully qualified class name required + resolving potential name clash.</para> + </callout> + + <callout arearefs="sd1_callout_createStringClass-3.2-co" + xml:id="sd1_callout_createStringClass-3.2"> + <para>Our constructor also accepts a standard <xref + linkend="glo_Java"/> <package + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + instance.</para> + </callout> + + <callout arearefs="sd1_callout_createStringClass-4-co" + xml:id="sd1_callout_createStringClass-4"> + <para>Returning a <package + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + instance.</para> + </callout> + </calloutlist> + + <para>There are basically two ways using + <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname> + and <package + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + in the same scope:</para> + + <glosslist> + <glossentry> + <glossterm>Fully qualify <package + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>:</glossterm> + + <glossdef> + <programlisting language="java">package de.hdm_stuttgart.mi; + +import de.hdm_stuttgart.mi.sd1.tooling.String; + +public class Main { + + public static void main(java.lang.String <co + linkends="sd1_callout_createStringAnswer1-1" + xml:id="sd1_callout_createStringAnswer1-1-co"/> [] args) { + String <co linkends="sd1_callout_createStringAnswer1-2" + xml:id="sd1_callout_createStringAnswer1-2-co"/> s = new String("John"); + System.out.println(s.sayHello()); + } +}</programlisting> + + <calloutlist> + <callout arearefs="sd1_callout_createStringAnswer1-1-co" + xml:id="sd1_callout_createStringAnswer1-1"> + <para>Qualifying is required to avoid shadowing by + <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname>.</para> + </callout> + + <callout arearefs="sd1_callout_createStringAnswer1-2-co" + xml:id="sd1_callout_createStringAnswer1-2"> + <para>Due to the <code language="java">import</code> + statement this is actually + <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname>.</para> + </callout> + </calloutlist> + </glossdef> + </glossentry> + + <glossentry> + <glossterm>Fully qualify + <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname>:</glossterm> + + <glossdef> + <programlisting language="java">package de.hdm_stuttgart.mi; + +public class Main { + + public static void main(String <co + linkends="sd1_callout_createStringAnswer2-1" + xml:id="sd1_callout_createStringAnswer2-1-co"/> [] args) { + de.hdm_stuttgart.mi.sd1.tooling.String <co + linkends="sd1_callout_createStringAnswer2-2" + xml:id="sd1_callout_createStringAnswer2-2-co"/> s = + new de.hdm_stuttgart.mi.sd1.tooling.String("John"); + System.out.println(s.sayHello()); + } +}</programlisting> + + <calloutlist> + <callout arearefs="sd1_callout_createStringAnswer2-1-co" + xml:id="sd1_callout_createStringAnswer2-1"> + <para>A <xref linkend="glo_Java"/> standard <classname + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + instance.</para> + </callout> + + <callout arearefs="sd1_callout_createStringAnswer2-2-co" + xml:id="sd1_callout_createStringAnswer2-2"> + <para>In order not to override the implicit import + java.lang.String we have to fully qualify our own + <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname> + class.</para> + </callout> + </calloutlist> + </glossdef> + </glossentry> + </glosslist> + </answer> + </qandaentry> + </qandadiv> + </qandaset> </section> </section>