diff --git a/java/2-1-JavaBasic/Animals1.java b/java/2-1-JavaBasic/Animals1.java new file mode 100644 index 0000000000000000000000000000000000000000..db059bd77bde9b3fabba954b193064babc75af6a --- /dev/null +++ b/java/2-1-JavaBasic/Animals1.java @@ -0,0 +1,36 @@ +// Simple class hierarchy +// Demonstrates abstract classes, containment + +public class Animals1 { + + // inner classes + // base class + abstract class Animal { + abstract String talk(); + } + + // derived classes + class Cat extends Animal { + String talk() { return "Meow!"; } + } + + class Dog extends Animal { + String talk() { return "Woof!"; } + } + + // container class methods + Animals1() { + speak(new Cat()); + speak(new Dog()); + } + + void speak(Animal a) { + System.out.println( a.talk() ); + } + + // static main methods -- entry point + public static void main(String[] args) { + Animals1 a = new Animals1(); + } +} + diff --git a/java/2-1-JavaBasic/Animals2.java b/java/2-1-JavaBasic/Animals2.java new file mode 100644 index 0000000000000000000000000000000000000000..fb2cd4fcd154478ad908f0186028b890024b1442 --- /dev/null +++ b/java/2-1-JavaBasic/Animals2.java @@ -0,0 +1,35 @@ +// Simple class hierarchy +// Contrasts interface and abstract class implementations + +public class Animals2 { + + // interface + interface Pet { + String talk(); + } + + // inner classes + class Cat implements Pet { + public String talk() { return "Meow!"; } + } + + class Dog implements Pet { + public String talk() { return "Woof!"; } + } + + // container class methods + Animals2() { + speak(new Cat()); + speak(new Dog()); + } + + void speak(Pet a) { + System.out.println( a.talk() ); + } + + // static main methods -- entry point + public static void main(String[] args) { + Animals2 a = new Animals2(); + } +} + diff --git a/java/2-1-JavaBasic/Bicycle.java b/java/2-1-JavaBasic/Bicycle.java new file mode 100644 index 0000000000000000000000000000000000000000..88edc06683ea41faa342103ed5fbe953dc3208e8 --- /dev/null +++ b/java/2-1-JavaBasic/Bicycle.java @@ -0,0 +1,30 @@ + +class Bicycle { + String owner = null; + int speed = 0; + int gear = 1; + + // constructor + Bicycle() { } + Bicycle(String name) { owner = name; } + + // methods + void changeSpeed(int newValue) { speed = newValue; } + void changeGear(int newValue) { gear = newValue; } + int getSpeed() { return speed; } + int getGear() { return gear; } + + // static entry point - main method + public static void main(String[] args) { + + Bicycle adultBike = new Bicycle("Jeff"); + adultBike.changeSpeed(20); + System.out.println("speed=" + adultBike.getSpeed()); + + Bicycle kidsBike = new Bicycle("Austin"); + kidsBike.changeSpeed(15); + System.out.println("speed=" + kidsBike.getSpeed()); + } +} + + diff --git a/java/2-1-JavaBasic/Bikes1.java b/java/2-1-JavaBasic/Bikes1.java new file mode 100644 index 0000000000000000000000000000000000000000..eb4f11c2e739b609cb52396c6bb6987fc925a635 --- /dev/null +++ b/java/2-1-JavaBasic/Bikes1.java @@ -0,0 +1,46 @@ +// Simple class hierarchy +// Demonstrates abstract classes and containment. + +// Bike container class +class Bikes1 { + + // base class + abstract class Bike { + int wheels = 0; + int speed = 0; + + void setWheels(int val) { wheels = val; } + void setSpeed(int val) { speed = val; } + void show() { + System.out.println("wheels = " + wheels); + } + } + + // derived two-wheel bike + class Bicycle extends Bike { + Bicycle() { + setWheels(2); + } + } + + // derived two-wheel bike + class Tricycle extends Bike { + Tricycle() { + setWheels(3); + } + } + + // container class + Bikes1() { + Bicycle b = new Bicycle(); + b.show(); + + Tricycle t = new Tricycle(); + t.show(); + } + + // entry point + public static void main(String[] args) { + Bikes1 b = new Bikes1(); + } +} \ No newline at end of file diff --git a/java/2-1-JavaBasic/Bikes2.java b/java/2-1-JavaBasic/Bikes2.java new file mode 100644 index 0000000000000000000000000000000000000000..e10422d7d1c478681406f0f65b78e4f1b0b2b85d --- /dev/null +++ b/java/2-1-JavaBasic/Bikes2.java @@ -0,0 +1,63 @@ +// Simple class hierarchy + interface +// Demonstrates abstract classes, containment, interfaces. + +// Bike container class +class Bikes2 { + + // base class + abstract class Bike { + int wheels = 0; + int speed = 0; + + void setWheels(int val) { wheels = val; } + void setSpeed(int val) { speed = val; } + void show() { + System.out.println("wheels = " + wheels); + System.out.println("speed = " + speed); + } + } + + // interface for ANYTHING driveable + // could be applied to car, scooter etc. + interface Driveable { + void accelerate(); + void brake(); + } + + // derived two-wheel bike + class Bicycle extends Bike implements Driveable { + + Bicycle() { setWheels(2); } + + // interface methods + // need to make public to match access level for interface (above) + public void accelerate() { setSpeed(speed += 5); } + public void brake() { setSpeed(speed -= 5); } + } + + // derived two-wheel bike + class Tricycle extends Bike implements Driveable { + Tricycle() { setWheels(3); } + + // interface methods + // need to make public to match access level for interface (above) + public void accelerate() { setSpeed(speed += 1); } + public void brake() { setSpeed(speed -= 1); } + } + + // container class + Bikes2() { + Bicycle b = new Bicycle(); + b.accelerate(); + b.show(); + + Tricycle t = new Tricycle(); + t.accelerate(); + t.show(); + } + + // entry point + public static void main(String[] args) { + Bikes2 b = new Bikes2(); + } +} \ No newline at end of file diff --git a/java/2-1-JavaBasic/Hello.java b/java/2-1-JavaBasic/Hello.java new file mode 100644 index 0000000000000000000000000000000000000000..b99cbffdc30cd373fc080b5f806d06ed681bb2b3 --- /dev/null +++ b/java/2-1-JavaBasic/Hello.java @@ -0,0 +1,18 @@ +import javax.swing.*; +import java.awt.Font; + +public class Hello extends JFrame { + + public static void main(String args[]) { + new Hello(); + } + + Hello() { + JLabel l = new JLabel("Hello Java"); + l.setFont(new Font("Serif", Font.PLAIN, 24)); + add(l); + setSize(200, 100); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setVisible(true); + } +} \ No newline at end of file diff --git a/java/2-1-JavaBasic/makefile b/java/2-1-JavaBasic/makefile new file mode 100644 index 0000000000000000000000000000000000000000..71f98a178cc866af423780679563f790fc9e6b85 --- /dev/null +++ b/java/2-1-JavaBasic/makefile @@ -0,0 +1,15 @@ +# super simple makefile +# call it using 'make NAME=name_of_code_file_without_extension' +# (assumes a .java extension) +NAME = "Hello" + +all: + @echo "Compiling..." + javac $(NAME).java + +run: all + @echo "Running..." + java $(NAME) + +clean: + rm -rf $(NAME).class