From b64f5e9e206ba1f9254199a48bbec1846201d0ae Mon Sep 17 00:00:00 2001 From: Julian T Date: Thu, 3 Sep 2020 10:21:33 +0200 Subject: Added first oop assignment --- sem5/oop/m1/notes.md | 29 +++++++++++++++++++++++++++++ sem5/oop/m1/src/Main.java | 14 ++++++++++++++ sem5/oop/m1/src/Person.java | 16 ++++++++++++++++ sem5/oop/m1/src/Student.java | 36 ++++++++++++++++++++++++++++++++++++ sem5/oop/m1/src/Uniperson.java | 7 +++++++ 5 files changed, 102 insertions(+) create mode 100644 sem5/oop/m1/notes.md create mode 100644 sem5/oop/m1/src/Main.java create mode 100644 sem5/oop/m1/src/Person.java create mode 100644 sem5/oop/m1/src/Student.java create mode 100644 sem5/oop/m1/src/Uniperson.java (limited to 'sem5') diff --git a/sem5/oop/m1/notes.md b/sem5/oop/m1/notes.md new file mode 100644 index 0000000..e879057 --- /dev/null +++ b/sem5/oop/m1/notes.md @@ -0,0 +1,29 @@ +# Introduction + +## Interfaces + +Abstract class used to define object API. + +Classes can then implement this API. + +``` +public interface Car { + public void turn(blabla); + blabla; +} +``` + +### Polymorphism + +Most general interface is Object (like golangs interface{} ? ). + +## Encapsulations + +Hide internal details. +This can be done with getters and setters. + +These getters and setters can then be used to to input validation. + +## Private vs protected + +Protected are accessible to subclasses which inherit from it. diff --git a/sem5/oop/m1/src/Main.java b/sem5/oop/m1/src/Main.java new file mode 100644 index 0000000..4ccb5a4 --- /dev/null +++ b/sem5/oop/m1/src/Main.java @@ -0,0 +1,14 @@ + +public class Main { + public static void main(String[] args) { + Student std = new Student("Julian", (short)21, "Male", (long)123213213, "COMTEK"); + Uniperson hej = std; + + hej.addGPA(0.32); + hej.addGPA(12); + + System.out.printf("deg: %s, sem: %d, avg: %f\n", hej.getDeg(), hej.getSem(), hej.avgGPA()); + + System.out.printf("person: %s\n", std); + } +} diff --git a/sem5/oop/m1/src/Person.java b/sem5/oop/m1/src/Person.java new file mode 100644 index 0000000..4ed517c --- /dev/null +++ b/sem5/oop/m1/src/Person.java @@ -0,0 +1,16 @@ + +public class Person { + protected String name; + protected String gender; + protected short age; + + public Person(String name, String gender, short age) { + this.name = name.equals("Victor") ? "Viktor" : name; + this.gender = gender; + this.age = age; + } + + public String toString() { + return String.format("%s[gen: %s, age: %d]", name, gender, age); + } +} diff --git a/sem5/oop/m1/src/Student.java b/sem5/oop/m1/src/Student.java new file mode 100644 index 0000000..cc9938c --- /dev/null +++ b/sem5/oop/m1/src/Student.java @@ -0,0 +1,36 @@ +public class Student extends Person implements Uniperson { + // Yes, we do support very long educations + private long semester; + private String degree; + + private double GPA; + private int GPAcount; + + public Student(String name, short age, String gender, long semester, String degree) { + super(name, gender, age); + this.semester = semester; + this.degree = degree; + this.GPA = 0; + this.GPAcount = 0; + } + + public void addGPA(double GPA) { + this.GPA += GPA; + this.GPAcount++; + } + + public long getSem() { + return this.semester; + } + + public String getDeg() { + return this.degree; + } + + public double avgGPA() { + if (this.GPAcount == 0) { + return 0; + } + return this.GPA / this.GPAcount; + } +} diff --git a/sem5/oop/m1/src/Uniperson.java b/sem5/oop/m1/src/Uniperson.java new file mode 100644 index 0000000..7493dea --- /dev/null +++ b/sem5/oop/m1/src/Uniperson.java @@ -0,0 +1,7 @@ + +public interface Uniperson { + public long getSem(); + public String getDeg(); + public double avgGPA(); + public void addGPA(double GPA); +} -- cgit v1.2.3