<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Android%2FGogoTraining%2FIntroduction_to_Java_7_and_Object-Oriented_Programming</id>
	<title>Android/GogoTraining/Introduction to Java 7 and Object-Oriented Programming - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Android%2FGogoTraining%2FIntroduction_to_Java_7_and_Object-Oriented_Programming"/>
	<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Android/GogoTraining/Introduction_to_Java_7_and_Object-Oriented_Programming&amp;action=history"/>
	<updated>2026-05-08T15:18:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://aznot.com/index.php?title=Android/GogoTraining/Introduction_to_Java_7_and_Object-Oriented_Programming&amp;diff=1950&amp;oldid=prev</id>
		<title>Kenneth: /* 20: Lab Exercise Review: POJO Inheritance and Enumeration */</title>
		<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Android/GogoTraining/Introduction_to_Java_7_and_Object-Oriented_Programming&amp;diff=1950&amp;oldid=prev"/>
		<updated>2015-03-15T04:29:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;20: Lab Exercise Review: POJO Inheritance and Enumeration&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;.&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;This course provides you with an intensive, hands-on approach to learning the Java Programming Language.  Presented as an evolving set of requirements, you will learn to use Java inputs and outputs, keywords, primate types, variables, packaging, and messaging while constructing a useful “real world” console application, create and use your own Java classes, arrays, Java Interfaces, generics, Object Orientation &amp;amp; Inheritance, as well as Java Templates, Collections and Exceptions.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
&lt;br /&gt;
As a result of taking this course, you will be able to:&lt;br /&gt;
* Create Java Programs that manage input, output, processing and errors&lt;br /&gt;
* Use the most common Java keywords, operators and statements&lt;br /&gt;
* Identify and apply “boxing” and “unboxing” in Java&lt;br /&gt;
* Use arrays, generics, collections&lt;br /&gt;
* Create objects that leverage object orientation&lt;br /&gt;
* Create polymorphic frameworks in Java using Java Classes, inheritance, and Interfaces&lt;br /&gt;
* Manage Java Objects using Arrays, Templates, and Collections&lt;br /&gt;
&lt;br /&gt;
== Outline ==&lt;br /&gt;
&lt;br /&gt;
Module 00: Introduction to Java 7 and Object-Oriented Programming - Course Introduction&lt;br /&gt;
&lt;br /&gt;
Module 01: What is Programming? &lt;br /&gt;
* Java Inputs&lt;br /&gt;
* Java Outputs&lt;br /&gt;
* Java Processing&lt;br /&gt;
* Java Tools and Types&lt;br /&gt;
* Java Virtual Machine&lt;br /&gt;
* Lab Exercise: Java Input and Output&lt;br /&gt;
&lt;br /&gt;
Module 02: Java Variables, Packaging and Messaging &lt;br /&gt;
* Java Packaging&lt;br /&gt;
* System.out and System.error&lt;br /&gt;
* Java Variables&lt;br /&gt;
* Introduction to Classes&lt;br /&gt;
* Lab Exercise: Reading Integral Input&lt;br /&gt;
&lt;br /&gt;
Module 03: Lab Exercise Review: Reading Integral Input&lt;br /&gt;
&lt;br /&gt;
Module 04: Basic Keywords and Types &lt;br /&gt;
* Java Program Structure&lt;br /&gt;
* Program Control Keywords&lt;br /&gt;
* Keyword Statements&lt;br /&gt;
* Control Keyword Usage&lt;br /&gt;
* Lab Exercise: Using and IDE and Java Statements&lt;br /&gt;
&lt;br /&gt;
Module 05: Java Primitive Types and Logical Operations &lt;br /&gt;
* Control Statements: if, do, while&lt;br /&gt;
* Strings&lt;br /&gt;
* Java Primitive Minimum and Maximum Ranges&lt;br /&gt;
* Lab Exercise: Class Console Loop&lt;br /&gt;
&lt;br /&gt;
Module 06: Lab Exercise Review: Class Console Loop&lt;br /&gt;
&lt;br /&gt;
Module 07: More Keywords and Classes &lt;br /&gt;
* Package Importation&lt;br /&gt;
* Common Classes&lt;br /&gt;
* More Looping Key Words&lt;br /&gt;
* “Boxing” and “Unboxing”&lt;br /&gt;
* Lab Exercise: Using “for loop” iteration in Java&lt;br /&gt;
&lt;br /&gt;
Module 08: Arrays and Operators &lt;br /&gt;
* More Arrays&lt;br /&gt;
* Java’s classic “for” keyword&lt;br /&gt;
* Java’s new “for” keyword&lt;br /&gt;
* Arithmetic Operators&lt;br /&gt;
&lt;br /&gt;
Module 09: More Operators &lt;br /&gt;
* Equality and Relational Operators&lt;br /&gt;
* Conditional &amp;amp; Shortcut Operators&lt;br /&gt;
* New Bit Shifting and Bit-Wise Operators&lt;br /&gt;
* Self-Assignment &amp;amp; Shifting Operators&lt;br /&gt;
* Precedence –v- Parentheses&lt;br /&gt;
* Lab Exercise: Using Arrays&lt;br /&gt;
&lt;br /&gt;
Module 10: Lab Exercise Review: Using Arrays&lt;br /&gt;
&lt;br /&gt;
Module 11: Java Class Relationships Part 1&lt;br /&gt;
* Basic Object Oriented Concepts&lt;br /&gt;
* Default Class Parentage&lt;br /&gt;
* Object Construction&lt;br /&gt;
&lt;br /&gt;
Module 12: Java Class Relationships Part 2&lt;br /&gt;
* Overriding Parent Methods&lt;br /&gt;
* Creating Plain Old Java Objects (POJO)&lt;br /&gt;
* Lab Exercise: Common Object Members and Operations&lt;br /&gt;
&lt;br /&gt;
Module 13: More Keywords and Classes&lt;br /&gt;
* Class Loaders, Members, Messaging and Information&lt;br /&gt;
* The 3 Ps of Inheritance: Public, Private and Protective&lt;br /&gt;
* POJO Example&lt;br /&gt;
* Encapsulation&lt;br /&gt;
* Switch Statement&lt;br /&gt;
* Lab Exercise: Using POJO&lt;br /&gt;
&lt;br /&gt;
Module 14: Lab Exercise Review: Using POJO&lt;br /&gt;
&lt;br /&gt;
Module 15: Object Orientations Part 1&lt;br /&gt;
* Java Constructors&lt;br /&gt;
* Inheritance Order&lt;br /&gt;
* Object Parentage&lt;br /&gt;
* Construction Order&lt;br /&gt;
&lt;br /&gt;
?Module 16: Object Orientations Part 2&lt;br /&gt;
* Parameterized Construction&lt;br /&gt;
* Constructor Reuse&lt;br /&gt;
* Private Construction&lt;br /&gt;
* Nested Classes&lt;br /&gt;
&lt;br /&gt;
Module 17: Object Orientations Part 3&lt;br /&gt;
* Object Oriented Concept Review&lt;br /&gt;
* The 3 Pillars of Object Oriented Programming&lt;br /&gt;
* Lab Exercise: Classes, Parents, Construction and Blocks&lt;br /&gt;
&lt;br /&gt;
Module 18: Object Orientations Part 4&lt;br /&gt;
* Diamond Inheritance&lt;br /&gt;
* Java Interfaces&lt;br /&gt;
* Abstract Classes&lt;br /&gt;
&lt;br /&gt;
Module 19: Frameworks and Enumerations&lt;br /&gt;
* Frameworks&lt;br /&gt;
* Enumerations&lt;br /&gt;
* Lab Exercise: POJO Inheritance and Enumeration&lt;br /&gt;
&lt;br /&gt;
Module 20: Lab Exercise Review: POJO Inheritance and Enumeration&lt;br /&gt;
&lt;br /&gt;
Module 21: Java Arrays&lt;br /&gt;
* Processing Arrays&lt;br /&gt;
* Passing Arrays&lt;br /&gt;
* Array Problems&lt;br /&gt;
&lt;br /&gt;
Module 22: Java Collections&lt;br /&gt;
* Collections Beyond Arrays&lt;br /&gt;
* Java Templates&lt;br /&gt;
* Collection Families&lt;br /&gt;
* Map, List and Dictionary&lt;br /&gt;
* Lab Exercise: Using List, Map, Key and Dictionary&lt;br /&gt;
&lt;br /&gt;
Module 23: Java Exceptions&lt;br /&gt;
* Reusing Exceptions&lt;br /&gt;
* “try”, “catch”, “throws”, “throw” and “finally”&lt;br /&gt;
* Java Exception Hierarchy&lt;br /&gt;
* Lab Exercise: Use Dates, Times and Exceptions&lt;br /&gt;
&lt;br /&gt;
Module 24: Lab Exercise Review: Dates, Times and Exceptions &lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Eclipse, Version Kepler or Juno - http://www.Eclipse.org&lt;br /&gt;
* A Java Software Development Kit (JDK) Verison 1.7 - download OpenJDK or Oracle JDK - http://www.oracle.com/technetwork/java/javase/downloads/index.html&lt;br /&gt;
&lt;br /&gt;
== 00: Introduction to Java 7 and Object-Oriented Programming - Course Introduction ==&lt;br /&gt;
&lt;br /&gt;
Everything is about class relationships and Object-Oriented Programming&lt;br /&gt;
&lt;br /&gt;
Resources: student guide, exercise guide, lab files&lt;br /&gt;
&lt;br /&gt;
== 01: What is Programming? ==&lt;br /&gt;
&lt;br /&gt;
inputs, outputs, processing, tools, JVM&lt;br /&gt;
&lt;br /&gt;
Java Virtual Machine (JVM) program&lt;br /&gt;
&lt;br /&gt;
Java Runtime Environment (JRE)&lt;br /&gt;
&lt;br /&gt;
Java Developer Toolkit (JDK)&lt;br /&gt;
&lt;br /&gt;
Java program made up of classes, blocks, class members and class statements&lt;br /&gt;
&lt;br /&gt;
Main:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class JavaOne {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    System.out.println(&amp;quot;Hello World&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 02: Java Variables, Packaging and Messaging ==&lt;br /&gt;
&lt;br /&gt;
Popular IDEs:&lt;br /&gt;
* Eclipse (http://eclipse.org/)&lt;br /&gt;
* Netbeans (http://netbeans.org/)&lt;br /&gt;
* JDeveloper (from Oracle)&lt;br /&gt;
* IntelliJ&lt;br /&gt;
&lt;br /&gt;
Key-words:&lt;br /&gt;
* case sensitive&lt;br /&gt;
* control java processing&lt;br /&gt;
* reserved - can&amp;#039;t be used elsewhere&lt;br /&gt;
&lt;br /&gt;
Variable - address that has changeable content&lt;br /&gt;
&lt;br /&gt;
Java Packaging&lt;br /&gt;
* qualification&lt;br /&gt;
* name space&lt;br /&gt;
&lt;br /&gt;
Static imports - don&amp;#039;t have to specify in imports (eg. java.lang)&lt;br /&gt;
&lt;br /&gt;
Ambiguity - when multiple classes of the same name are imported. To solve use fully qualified name.&lt;br /&gt;
&lt;br /&gt;
Application Programming Interface (API)&lt;br /&gt;
&lt;br /&gt;
Return type must match method definition&lt;br /&gt;
&lt;br /&gt;
== 03: Lab Exercise Review: Reading Integral Input ==&lt;br /&gt;
&lt;br /&gt;
umm... lab seems out of place&lt;br /&gt;
&lt;br /&gt;
== 04: Basic Keywords and Types ==&lt;br /&gt;
&lt;br /&gt;
Comments&lt;br /&gt;
 // line comment&lt;br /&gt;
 /* multi line&lt;br /&gt;
    comment */&lt;br /&gt;
&lt;br /&gt;
POJO - Plain Old Java Object&lt;br /&gt;
&lt;br /&gt;
Getters and Setters&lt;br /&gt;
&lt;br /&gt;
flowchart diagram&lt;br /&gt;
* modern: activity diagram&lt;br /&gt;
* square - statements&lt;br /&gt;
* diamond - choice&lt;br /&gt;
* oval - start/end&lt;br /&gt;
&lt;br /&gt;
== 05: Java Primitive Types and Logical Operations ==&lt;br /&gt;
&lt;br /&gt;
Integer Ranges:&lt;br /&gt;
* short = -32768 to 32767 | 2^15 | Short.MIN_VALUE Short.MAX_VALUE&lt;br /&gt;
* int = -2147483648 to 2147483647 | 2^31 | Integer.MIN_VALUE Integer.MAX_VALUE&lt;br /&gt;
* long = -9223372036854775808 to 9223372036854775807 | 2^63 | Long.MIN_VALUE Long.MAX_VALUE&lt;br /&gt;
* double&lt;br /&gt;
* float&lt;br /&gt;
* character - two bytes for international languages&lt;br /&gt;
&lt;br /&gt;
 boolean myflag = true;&lt;br /&gt;
&lt;br /&gt;
== 06: Lab Exercise Review: Class Console Loop ==&lt;br /&gt;
&lt;br /&gt;
Moving code to separate classes to build your library&lt;br /&gt;
&lt;br /&gt;
== 07: More Keywords and Classes ==&lt;br /&gt;
&lt;br /&gt;
Simple Imports&lt;br /&gt;
* Import into global name space&lt;br /&gt;
* Use &amp;quot;Fully-Qualified&amp;quot; names in case of collision&lt;br /&gt;
* Prefix with one level up&lt;br /&gt;
 &lt;br /&gt;
Static Imports&lt;br /&gt;
* Works like auto-import (e.g. String)&lt;br /&gt;
&lt;br /&gt;
 import static java.lang.System.*;&lt;br /&gt;
 ...&lt;br /&gt;
 out.println(&amp;quot;hi&amp;quot;);    // System.out...&lt;br /&gt;
&lt;br /&gt;
Casting&lt;br /&gt;
&lt;br /&gt;
All primitive types have a wrapper class.&lt;br /&gt;
 Byte, Char, Short, Integer, Long, Double, Float, Boolean&lt;br /&gt;
&lt;br /&gt;
Boxing - Wrapping a primitive in an Instance&lt;br /&gt;
&lt;br /&gt;
Primitives &amp;amp; Wrapper Class&lt;br /&gt;
* box - add primitive value to class&lt;br /&gt;
* unbox - remove primitive value from class&lt;br /&gt;
* wrap primitive types with a class&lt;br /&gt;
** Integer, Double, Float, etc.&lt;br /&gt;
&lt;br /&gt;
 // boxing&lt;br /&gt;
 int age = 39;&lt;br /&gt;
 int MyIntance = new Integer(age)&lt;br /&gt;
&lt;br /&gt;
 // unboxing&lt;br /&gt;
 int unboxed = MyInstance;&lt;br /&gt;
&lt;br /&gt;
Casting:&lt;br /&gt;
 System.out.println(&amp;quot;char max = &amp;quot; + (int) Character.MAX_VALUE);&lt;br /&gt;
&lt;br /&gt;
Syntactical Sugar&lt;br /&gt;
&lt;br /&gt;
Mutable vs Immutable&lt;br /&gt;
&lt;br /&gt;
 String strA = &amp;quot;hello world&amp;quot;;&lt;br /&gt;
 stra.substring(0, pos)&lt;br /&gt;
&lt;br /&gt;
String = collection of characters&lt;br /&gt;
* java.lang.String&lt;br /&gt;
* String are immutable&lt;br /&gt;
&lt;br /&gt;
Substring and index:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String message = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
if (message.indexOf(&amp;quot;a&amp;quot;) == -1) { ... }&lt;br /&gt;
String hi = message.substring(0, 5);&lt;br /&gt;
String letter = message.substring(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
while (true) {&lt;br /&gt;
 ...&lt;br /&gt;
 if (...) { continue; }&lt;br /&gt;
 if (...) { break; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 String str1 = &amp;quot;test&amp;quot;;&lt;br /&gt;
 char[] array = str1.toCharArray();&lt;br /&gt;
&lt;br /&gt;
New for loop style:&lt;br /&gt;
 for (char ch: array) { System.out.println(ch); }&lt;br /&gt;
&lt;br /&gt;
Bytes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String str = &amp;quot;hello&amp;quot;;&lt;br /&gt;
char[] chars = str.toCharArray();&lt;br /&gt;
byte[] bytes = str.getBytes();&lt;br /&gt;
for (int ss = 0; ss &amp;lt; chars.length; ss++) {&lt;br /&gt;
  System.out.println(&amp;quot;char:&amp;quot; + chars[ss] + &amp;quot; byte:&amp;quot; + bytes[ss]);&lt;br /&gt;
}&lt;br /&gt;
for (int ss = 0 ; ss &amp;lt; bytes.lenght; ss++) {&lt;br /&gt;
  System.out.println(&amp;quot; &amp;quot; + (char)bytes[ss]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 08: Arrays and Operators ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		String[] result = null;&lt;br /&gt;
		result = &amp;quot;Hello World&amp;quot;.split(&amp;quot; &amp;quot;);&lt;br /&gt;
		for(int i = 0; i &amp;lt; result.length; i++)&lt;br /&gt;
			out.println(i + &amp;quot;=&amp;quot; + result[i]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My ArrayList test:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		List&amp;lt;String&amp;gt; wordlist = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
		String[] arrlist = &amp;quot;Hello World&amp;quot;.split(&amp;quot; &amp;quot;);&lt;br /&gt;
		wordlist = Arrays.asList(arrlist);&lt;br /&gt;
		for(int i = 0; i &amp;lt; wordlist.size(); i++)&lt;br /&gt;
			out.println(i + &amp;quot;=&amp;quot; + wordlist.get(i));&lt;br /&gt;
		for(String word : wordlist)&lt;br /&gt;
			out.println(word);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
java - Convert String array to ArrayList - Stack Overflow - http://stackoverflow.com/questions/10530353/convert-string-array-to-arraylist&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.util.Arrays;  &lt;br /&gt;
import java.util.List;  &lt;br /&gt;
import java.util.ArrayList;  &lt;br /&gt;
public class StringArrayTest  &lt;br /&gt;
{  &lt;br /&gt;
   public static void main(String[] args)  &lt;br /&gt;
   {  &lt;br /&gt;
      String[] words = {&amp;quot;ace&amp;quot;, &amp;quot;boom&amp;quot;, &amp;quot;crew&amp;quot;, &amp;quot;dog&amp;quot;, &amp;quot;eon&amp;quot;};  &lt;br /&gt;
&lt;br /&gt;
      List&amp;lt;String&amp;gt; wordList = Arrays.asList(words);  &lt;br /&gt;
&lt;br /&gt;
      for (String e : wordList)  &lt;br /&gt;
      {  &lt;br /&gt;
         System.out.println(e);  &lt;br /&gt;
      }  &lt;br /&gt;
   }  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String split:&lt;br /&gt;
 String[] result = msg.split(&amp;quot; &amp;quot;);&lt;br /&gt;
 for(String str : result) { out.println(str); }&lt;br /&gt;
&lt;br /&gt;
Operators:&lt;br /&gt;
 + Unary Plus&lt;br /&gt;
 - Unary Minus&lt;br /&gt;
 ++ Increment&lt;br /&gt;
 -- Decrement&lt;br /&gt;
 ! Logical Complement&lt;br /&gt;
 + Additive (string concatenation)&lt;br /&gt;
 - subtraction&lt;br /&gt;
 * multiplication&lt;br /&gt;
 / division&lt;br /&gt;
 % remainder (modulo)&lt;br /&gt;
&lt;br /&gt;
 ++var vs --var&lt;br /&gt;
&lt;br /&gt;
String concatenation&lt;br /&gt;
&lt;br /&gt;
== 09: More Operators ==&lt;br /&gt;
&lt;br /&gt;
 == equal to&lt;br /&gt;
 != not equal to&lt;br /&gt;
 &amp;gt; Greater than&lt;br /&gt;
 &amp;gt;= Grater than or equal to&lt;br /&gt;
 &amp;lt; less than&lt;br /&gt;
 &amp;lt;= less than or equal to&lt;br /&gt;
&lt;br /&gt;
Ternary:&lt;br /&gt;
 boolean wantsData = false;&lt;br /&gt;
 int calc = wantsData ? 22 : 42;&lt;br /&gt;
 int calc = (wantsData) ? 22 : 42;  // parentheses add clarity?&lt;br /&gt;
&lt;br /&gt;
Shortcut Operators:&lt;br /&gt;
 if(bool1 &amp;amp;&amp;amp; bool2) { ... } // ends at bool1 if false&lt;br /&gt;
 if(boo1 || bool2) { ... } // ends at bool1 if true&lt;br /&gt;
&lt;br /&gt;
Bit shifting &amp;amp; bitwise:&lt;br /&gt;
 int bits = 0b111;&lt;br /&gt;
 bits ^= Integer.MAX_VALUE; // XOR - SELF = shift left&lt;br /&gt;
&lt;br /&gt;
 - Unary compliment&lt;br /&gt;
 &amp;lt;&amp;lt; signed shift left&lt;br /&gt;
 &amp;gt;&amp;gt; signed shift right&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; Unsigned shift right&lt;br /&gt;
 &amp;amp; bitwise AND&lt;br /&gt;
 ^ bitwise exclusive OR (XOR)&lt;br /&gt;
 | bitwise inclusive OR&lt;br /&gt;
&lt;br /&gt;
 int bits = 0b111;&lt;br /&gt;
 System.out.println(Integer.toBinaryString(bits));&lt;br /&gt;
&lt;br /&gt;
Assignment Operators:&lt;br /&gt;
 =  +=  -=  *=  /=  %=&lt;br /&gt;
 &amp;amp;=  ^=  |=  &amp;lt;&amp;lt;=  &amp;gt;&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
== 10: Lab Exercise Review: Using Arrays ==&lt;br /&gt;
&lt;br /&gt;
Get comfortable with the IDE&lt;br /&gt;
&lt;br /&gt;
shortcut-key: F3 - go to class definition&lt;br /&gt;
&lt;br /&gt;
== 11: Java Class Relationships Part 1 ==&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Basic Object Oriented Concepts&lt;br /&gt;
* Default Class Parentage&lt;br /&gt;
* Object Construction&lt;br /&gt;
&lt;br /&gt;
Naming Conventions for public interfaces&lt;br /&gt;
* Start with alphabetic&lt;br /&gt;
* Lower-case package name&lt;br /&gt;
* Upper-case class name&lt;br /&gt;
* Same-name revisions = numeric suffix&lt;br /&gt;
* Underscores okay&lt;br /&gt;
&lt;br /&gt;
All objects are related - Java.lang.Object (super parent class)&lt;br /&gt;
&lt;br /&gt;
Static Imports&lt;br /&gt;
* Instance NOT required&lt;br /&gt;
* main activity started&lt;br /&gt;
&lt;br /&gt;
 package com.test;&lt;br /&gt;
 import static com.test.helpers.reader.*;&lt;br /&gt;
 public class testTwo {&lt;br /&gt;
   public static void main(String[] args) {&lt;br /&gt;
     out.println(&amp;quot;Test&amp;quot;);  // using static import&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Create class instance&lt;br /&gt;
 public class Test { ... }&lt;br /&gt;
 Test test = new Test();&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Kenneth&amp;#039;s Test:&lt;br /&gt;
&lt;br /&gt;
test/Main.java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package test;&lt;br /&gt;
&lt;br /&gt;
import world.TestClass;&lt;br /&gt;
&lt;br /&gt;
public class Main {&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		System.out.println(&amp;quot;Instance Counter&amp;quot;);&lt;br /&gt;
		TestClass testclass = new TestClass();&lt;br /&gt;
		System.out.println(testclass.InstanceCount());&lt;br /&gt;
		System.out.println(testclass.InstanceCount());&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Static Counter&amp;quot;);&lt;br /&gt;
		System.out.println(TestClass.StaticCount());&lt;br /&gt;
		System.out.println(TestClass.StaticCount());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
world/TestClass.java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package world;&lt;br /&gt;
&lt;br /&gt;
public class TestClass {&lt;br /&gt;
&lt;br /&gt;
	private int instanceCounter = 0;&lt;br /&gt;
	private static int staticCounter = 0;&lt;br /&gt;
	&lt;br /&gt;
	public int InstanceCount() {&lt;br /&gt;
		return this.instanceCounter++;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public static int StaticCount() {&lt;br /&gt;
		return staticCounter++;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12: Java Class Relationships Part 2 ==&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Overriding Parent Methods&lt;br /&gt;
* Creating Plain Old Java Objects (POJO)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POJO:&lt;br /&gt;
* Should be Self Describing&lt;br /&gt;
* Encapsulated Fields (data hiding)&lt;br /&gt;
** Getters and Setters (data protection)&lt;br /&gt;
** get = read&lt;br /&gt;
** set = update&lt;br /&gt;
* Design classes to be a &amp;quot;Noun/Verb&amp;quot; practices&lt;br /&gt;
&lt;br /&gt;
CRUD operations&lt;br /&gt;
* Create&lt;br /&gt;
* Read&lt;br /&gt;
* Update&lt;br /&gt;
* Delete&lt;br /&gt;
&lt;br /&gt;
java.lang.Object: (most related, and likely to be overridden)&lt;br /&gt;
* .equals()&lt;br /&gt;
* .toString()&lt;br /&gt;
* .getHashcode()&lt;br /&gt;
&lt;br /&gt;
Example of overriding .toString():&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	@Override&lt;br /&gt;
	public String toString() {&lt;br /&gt;
		//return super.toString();&lt;br /&gt;
		return &amp;quot;I am a string&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When overriding, should override .equals() and .getHashcode() at the same time.&lt;br /&gt;
&lt;br /&gt;
NOTE: Operator overloading is not supported in Java, but is supported in C++.&lt;br /&gt;
&lt;br /&gt;
Check if instance of:&lt;br /&gt;
 if (obj instanceof SomeClass) { ... }&lt;br /&gt;
&lt;br /&gt;
Casting:&lt;br /&gt;
 SomeClass myclass = (SomeClass)obj;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;dot notation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Correctly overriding an object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class UserId {&lt;br /&gt;
  int userId = 0;&lt;br /&gt;
  public UserId(int id) {&lt;br /&gt;
	  userId = id;&lt;br /&gt;
  }&lt;br /&gt;
  @Override&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return Integer.toString(userId);&lt;br /&gt;
  }&lt;br /&gt;
  @Override&lt;br /&gt;
  public int hashCode() {&lt;br /&gt;
    return toString().hashCode();&lt;br /&gt;
  }&lt;br /&gt;
  @Override&lt;br /&gt;
  public boolean equals(Object obj) {&lt;br /&gt;
    if(obj == null) return false;  // no-address test&lt;br /&gt;
    if(obj == this) return true;  // same-address test&lt;br /&gt;
    if(obj instanceof UserId) {&lt;br /&gt;
      UserId ref = (UserId)obj;  // same-class test&lt;br /&gt;
      return (this.userId == ref.userId);  // internal class id, if used&lt;br /&gt;
    }&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
test:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		UserId uid1 = new UserId(1);&lt;br /&gt;
		UserId uid2 = new UserId(2);&lt;br /&gt;
		UserId uid3 = new UserId(1);&lt;br /&gt;
		System.out.println(uid1.toString());  // 1&lt;br /&gt;
		System.out.println(uid2.toString());  // 2&lt;br /&gt;
		System.out.println(uid3.toString());  // 1&lt;br /&gt;
		System.out.println(uid1.hashCode());  // 49&lt;br /&gt;
		System.out.println(uid2.hashCode());  // 50&lt;br /&gt;
		System.out.println(uid3.hashCode());  // 49&lt;br /&gt;
		System.out.println(uid1.equals(uid1));  // true&lt;br /&gt;
		System.out.println(uid1.equals(uid2));  // false&lt;br /&gt;
		System.out.println(uid1.equals(uid3));  // true&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@Override is Annotation to help compiler - not required, but highly recommended - ?see JSR250?&lt;br /&gt;
&lt;br /&gt;
== 13: More Keywords and Classes ==&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Class loaders, members, messaging and information&lt;br /&gt;
* 3 Ps of Inheritance: public, private, protected&lt;br /&gt;
* Inheritance - Re-use &amp;amp; Visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Class description (or class information)&lt;br /&gt;
 Object.getClass()&lt;br /&gt;
&lt;br /&gt;
Polymorphism - many faces, or may changes/morphs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;The 3 Ps&amp;quot; of Inheritance: Public, Private, Protected&lt;br /&gt;
* Public - wherewhere&lt;br /&gt;
* Private - self-only&lt;br /&gt;
* Protected (default) - package only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switch:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
switch (option) {&lt;br /&gt;
  case &amp;#039;1&amp;#039;:&lt;br /&gt;
    continue;&lt;br /&gt;
  case &amp;#039;2&amp;#039;:&lt;br /&gt;
    break;&lt;br /&gt;
  default:&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Java Keyword Inventory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
abstract	assert		boolean		break		byte		case&lt;br /&gt;
catch		chat		class				continue	default&lt;br /&gt;
double		do		else		enum		extends		false&lt;br /&gt;
final		finally		float		for				if&lt;br /&gt;
implements	import		instanceof	int		interface	long&lt;br /&gt;
native		new		null		package		private		protected&lt;br /&gt;
public		return		short		static		strictfp	super&lt;br /&gt;
swtich		synchronized	this		throw		throws		transient&lt;br /&gt;
true		try		void		volatile	while&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 14: Lab Exercise Review: Using POJO ==&lt;br /&gt;
&lt;br /&gt;
Lab Example&lt;br /&gt;
&lt;br /&gt;
== 15: Object Orientations Part 1 ==&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Java Constructors&lt;br /&gt;
* Inheritance Order&lt;br /&gt;
* Object Parentage&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;this&amp;#039; refers to SELF&lt;br /&gt;
* &amp;#039;super&amp;#039; refers to PARENT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class MyClass extends MyParent {&lt;br /&gt;
  public MyClass() {&lt;br /&gt;
    super();  // call super class constructor&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 16: Object Orientations Part 2 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameterized Construction&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class MyClass extends MyParent {&lt;br /&gt;
  public MyClass(String msg) {&lt;br /&gt;
    super(msg);  // call super class constructor&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Once we create a parameterized constructor, we loose the free default constructor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class MyClass extends MyParent {&lt;br /&gt;
  public MyClass() {&lt;br /&gt;
    this(42);  // call self constructor&lt;br /&gt;
  }&lt;br /&gt;
  public MyClass(String msg) {&lt;br /&gt;
    super(msg);  // call super class constructor&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nesting Classes&lt;br /&gt;
* Organize code&lt;br /&gt;
* Associate classes&lt;br /&gt;
* Govern creation dependences&lt;br /&gt;
* Type types&lt;br /&gt;
** Default nesting = parent only&lt;br /&gt;
** Static nesting = use anywhere&lt;br /&gt;
&lt;br /&gt;
Default and Static nesting:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class Nesting {&lt;br /&gt;
  public Nesting() {&lt;br /&gt;
    new DefaultNest();&lt;br /&gt;
    new StaticNest();&lt;br /&gt;
  }&lt;br /&gt;
  public class DefaultNest {&lt;br /&gt;
    public DefaultNest() {}&lt;br /&gt;
  }&lt;br /&gt;
  public static class StaticNest {&lt;br /&gt;
    public StaticNest() {}&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    // new DefaultNest();  // CAN NOT ACCESS!!&lt;br /&gt;
    new StaticNest();&lt;br /&gt;
    new Nesting();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 17: Object Orientations Part 3 ==&lt;br /&gt;
&lt;br /&gt;
3 Pillars of OOP:&lt;br /&gt;
# Encapsulation - Data Hiding&lt;br /&gt;
# Inheritance - hierarchical relationship tree&lt;br /&gt;
# Polymorphism - Morphing objects, Signature Rules (overloading/overriding), signature contracts&lt;br /&gt;
&lt;br /&gt;
== 18: Object Orientations Part 4 ==&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Diamond Inheritance (multiple inheritance) - java doesn&amp;#039;t support&lt;br /&gt;
* Java Interfaces&lt;br /&gt;
* Abstract Classes&lt;br /&gt;
&lt;br /&gt;
Interfaces - As Java doesn&amp;#039;t support multiple inheritance, instead is supports multiple interface contracts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public interface Drawn {&lt;br /&gt;
  void drawObject();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Circle {&lt;br /&gt;
  public void drawCircle() { ... }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class MyCicle extends Circle implements Drawn {&lt;br /&gt;
  public void drawCircle() {&lt;br /&gt;
    super.drawCircle()&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abstract Class - does not provide implementations for all its methods.  A parent class that *has* to be overridden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public abstract class aCircle {&lt;br /&gt;
  abstract void drawCircle();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class MyCirlce extends aCircle {&lt;br /&gt;
  @Override&lt;br /&gt;
  void drawCirlce() { ... }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Concrete Class - A derived class that implements all the missing functionality is called a concrete class&lt;br /&gt;
&lt;br /&gt;
Getting class details:&lt;br /&gt;
 for (Object ref : array) { ... }&lt;br /&gt;
 String.class.getName()&lt;br /&gt;
 obj.getClass().getName()&lt;br /&gt;
&lt;br /&gt;
== 19: Frameworks and Enumerations ==&lt;br /&gt;
&lt;br /&gt;
Frameworks - is a set of classes and interfaces that implement commonly reusable collection data structures. Although referred to as a framework, it works in a manner of a library.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enumeration gives names to values (name tags)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
enum MenuOptions {&lt;br /&gt;
  mo_None, mo_Create, mo_Delete, ..., mo_Quit,&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
MenuOptions option = MenuOption.mo_None;&lt;br /&gt;
&lt;br /&gt;
switch (option) {&lt;br /&gt;
  case mo_Create:&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enum with constructors:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public enum MenuOptions {&lt;br /&gt;
  mo_None(&amp;quot;Mani Menu&amp;quot;),&lt;br /&gt;
  mo_Create(&amp;quot;Create Record&amp;quot;),&lt;br /&gt;
  ...&lt;br /&gt;
  mo_Quit(&amp;quot;End&amp;quot;);&lt;br /&gt;
  public string message = &amp;quot;&amp;quot;;&lt;br /&gt;
  private MenuOptions(String message) {&lt;br /&gt;
    this.message = message;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 20: Lab Exercise Review: POJO Inheritance and Enumeration ==&lt;br /&gt;
&lt;br /&gt;
lab exercise&lt;br /&gt;
&lt;br /&gt;
== 21: Java Arrays ==&lt;br /&gt;
&lt;br /&gt;
== 22: Java Collections ==&lt;br /&gt;
&lt;br /&gt;
== 23: Java Exceptions ==&lt;br /&gt;
&lt;br /&gt;
== 24: Lab Exercise Review: Dates, Times and Exceptions ==&lt;/div&gt;</summary>
		<author><name>Kenneth</name></author>
	</entry>
</feed>