From 0cb0577083344cabbd7ea415396133398c1a7ec6 Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Sun, 24 Dec 2017 00:51:28 -0600 Subject: [PATCH 01/12] updated gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6143e53..079beb8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Compiled class file +.idea/* *.class - +*.iml # Log file *.log From cd5f5942e1a06360d10ce07fdbc950c0f5c9d1f7 Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Sun, 24 Dec 2017 01:07:57 -0600 Subject: [PATCH 02/12] entered empty module.info --- inheritance/src/module-info.java | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 inheritance/src/module-info.java diff --git a/inheritance/src/module-info.java b/inheritance/src/module-info.java new file mode 100644 index 0000000..de8e3dd --- /dev/null +++ b/inheritance/src/module-info.java @@ -0,0 +1,3 @@ +module inheritance { + +} \ No newline at end of file From a0fbd97418c81f8d2e6a227b20aad828ab00283f Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Mon, 25 Dec 2017 13:34:15 -0600 Subject: [PATCH 03/12] cleaned up master --- inheritance/src/module-info.java | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 inheritance/src/module-info.java diff --git a/inheritance/src/module-info.java b/inheritance/src/module-info.java deleted file mode 100644 index de8e3dd..0000000 --- a/inheritance/src/module-info.java +++ /dev/null @@ -1,3 +0,0 @@ -module inheritance { - -} \ No newline at end of file From b3fea7fe3f51c064725f45640a94b60a13f38e60 Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Wed, 27 Dec 2017 20:28:11 -0600 Subject: [PATCH 04/12] readme.md file updated --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e0034c..0db5e92 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,9 @@ -# DesignPatternsJava9 +# Definition of inheritance +Inheritance is a mechanism in which one object acquires all the properties and behaviours of the parent object. Inheritance allows programmers to create classes that are built upon existing classes, to specify a new implementation to maintain the same behaviour to reuse code. + +# Issues with inheritance +The main problem with implementation inheritance is that it introduces unnecessary coupling in the form of the "fragile base class problem" modifications to the base class implementation can cause inadvertent behavioral changes in subclasses, creates strong coupling and loose flexibility. + +## DesignPatternsJava9 This repo consists Gang of Four Design patterns code on Java 9. Each branch in the repository has code of 1 design pattern. Switch repository to try out different design patterns. + From 92fb5f197d6e2eb7d589f42ec6eda95ce1d38d04 Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Wed, 27 Dec 2017 20:29:03 -0600 Subject: [PATCH 05/12] added inheritance module related in project for idea intelliJ --- .gitignore | 1 - .../com.premaseem.inheritance.iml | 11 +++++++++++ com.premaseem.inheritance/src/module-info.java | 9 +++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 com.premaseem.inheritance/com.premaseem.inheritance.iml create mode 100644 com.premaseem.inheritance/src/module-info.java diff --git a/.gitignore b/.gitignore index 079beb8..7cd76db 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ # Compiled class file .idea/* *.class -*.iml # Log file *.log diff --git a/com.premaseem.inheritance/com.premaseem.inheritance.iml b/com.premaseem.inheritance/com.premaseem.inheritance.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/com.premaseem.inheritance/com.premaseem.inheritance.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/com.premaseem.inheritance/src/module-info.java b/com.premaseem.inheritance/src/module-info.java new file mode 100644 index 0000000..4fd16c1 --- /dev/null +++ b/com.premaseem.inheritance/src/module-info.java @@ -0,0 +1,9 @@ +/* +@author: Aseem Jain +@title: Design Patterns with Java 9 +@link: https://premaseem.wordpress.com/category/computers/design-patterns/ +@copyright: 2018 Packt Publication +*/ +module com.premaseem.inheritance { + +} \ No newline at end of file From 150e415ccec401ded19776e4a08bd4a6f5b81373 Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Wed, 27 Dec 2017 22:03:40 -0600 Subject: [PATCH 06/12] step 1: only developer class --- .../com/com/premaseem/inheritance/Client.java | 20 ++++++ .../inheritance/model/Developer.java | 61 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java create mode 100644 com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java new file mode 100644 index 0000000..0477376 --- /dev/null +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java @@ -0,0 +1,20 @@ + +package com.com.premaseem.inheritance; + +import com.com.premaseem.inheritance.model.Developer; + +/* +@author: Aseem Jain +@title: Design Patterns with Java 9 +@link: https://premaseem.wordpress.com/category/computers/design-patterns/ +@copyright: 2018 Packt Publication +*/ +public class Client { + public static void main (String[] args) { + Developer employee1 = new Developer("Aseem", + 20,100); + System.out.println("Inheritence concept"); + System.out.println(employee1); + } + +} diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java new file mode 100644 index 0000000..7406138 --- /dev/null +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java @@ -0,0 +1,61 @@ +package com.com.premaseem.inheritance.model; + +/* +@author: Aseem Jain +@title: Design Patterns with Java 9 +@link: https://premaseem.wordpress.com/category/computers/design-patterns/ +@copyright: 2018 Packt Publication +*/ +public class Developer { + + private String name; + private Integer salary; + private Integer workHours; + private Integer rate; + + public Developer(String name, Integer workHours, Integer rate) { + this.name = name; + this.workHours = workHours; + this.rate = rate; + } + + @Override + public String toString() { + return "Developer{" + + "name='" + name + '\'' + + ", salary=" + getSalary() + + ", workHours=" + workHours + + ", rate=" + rate + + '}'; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getSalary() { + salary = workHours * rate; + return salary; + } + + + public Integer getWorkHours() { + return workHours; + } + + public void setWorkHours(Integer workHours) { + this.workHours = workHours; + } + + public Integer getRate() { + return rate; + } + + public void setRate(Integer rate) { + this.rate = rate; + } +} From cc5451536ae3dc6d429b355add6694d8e7b7ffdc Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Wed, 27 Dec 2017 22:11:42 -0600 Subject: [PATCH 07/12] step 2: code duplication - added QE and HR class --- .../com/com/premaseem/inheritance/Client.java | 12 +++- .../inheritance/model/Developer.java | 6 +- .../com/premaseem/inheritance/model/Hr.java | 61 +++++++++++++++++++ .../com/premaseem/inheritance/model/QE.java | 61 +++++++++++++++++++ 4 files changed, 134 insertions(+), 6 deletions(-) create mode 100644 com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java create mode 100644 com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java index 0477376..fded4b6 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java @@ -2,6 +2,8 @@ package com.com.premaseem.inheritance; import com.com.premaseem.inheritance.model.Developer; +import com.com.premaseem.inheritance.model.Hr; +import com.com.premaseem.inheritance.model.QE; /* @author: Aseem Jain @@ -11,10 +13,14 @@ */ public class Client { public static void main (String[] args) { - Developer employee1 = new Developer("Aseem", - 20,100); - System.out.println("Inheritence concept"); + Developer employee1 = new Developer("Aseem", 20,100); + QE employee2 = new QE("Aseem", 20,100); + Hr employee3 = new Hr("Aseem", 20,100); + + System.out.println("Inheritance concept"); System.out.println(employee1); + System.out.println(employee2); + System.out.println(employee3); } } diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java index 7406138..eb5e452 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java @@ -9,7 +9,7 @@ public class Developer { private String name; - private Integer salary; + private Float salary; private Integer workHours; private Integer rate; @@ -37,8 +37,8 @@ public void setName(String name) { this.name = name; } - public Integer getSalary() { - salary = workHours * rate; + public Float getSalary() { + salary = (float)workHours * rate; return salary; } diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java new file mode 100644 index 0000000..c124df4 --- /dev/null +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java @@ -0,0 +1,61 @@ +package com.com.premaseem.inheritance.model; + +/* +@author: Aseem Jain +@title: Design Patterns with Java 9 +@link: https://premaseem.wordpress.com/category/computers/design-patterns/ +@copyright: 2018 Packt Publication +*/ +public class Hr { + + private String name; + private Float salary; + private Integer workHours; + private Integer rate; + + public Hr (String name, Integer workHours, Integer rate) { + this.name = name; + this.workHours = workHours; + this.rate = rate; + } + + @Override + public String toString() { + return "HR{" + + "name='" + name + '\'' + + ", salary=" + getSalary() + + ", workHours=" + workHours + + ", rate=" + rate + + '}'; + } + + public Float getSalary() { + salary = (float)workHours * rate; + return salary; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + public Integer getWorkHours() { + return workHours; + } + + public void setWorkHours(Integer workHours) { + this.workHours = workHours; + } + + public Integer getRate() { + return rate; + } + + public void setRate(Integer rate) { + this.rate = rate; + } +} diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java new file mode 100644 index 0000000..326c5c6 --- /dev/null +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java @@ -0,0 +1,61 @@ +package com.com.premaseem.inheritance.model; + +/* +@author: Aseem Jain +@title: Design Patterns with Java 9 +@link: https://premaseem.wordpress.com/category/computers/design-patterns/ +@copyright: 2018 Packt Publication +*/ +public class QE { + + private String name; + private Float salary; + private Integer workHours; + private Integer rate; + + public QE (String name, Integer workHours, Integer rate) { + this.name = name; + this.workHours = workHours; + this.rate = rate; + } + + @Override + public String toString() { + return "QE{" + + "name='" + name + '\'' + + ", salary=" + getSalary() + + ", workHours=" + workHours + + ", rate=" + rate + + '}'; + } + + public Float getSalary() { + salary = (float)workHours * rate; + return salary; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + public Integer getWorkHours() { + return workHours; + } + + public void setWorkHours(Integer workHours) { + this.workHours = workHours; + } + + public Integer getRate() { + return rate; + } + + public void setRate(Integer rate) { + this.rate = rate; + } +} From c7b0fe94a5394164cc7969bc7302ff71e4627b79 Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Wed, 27 Dec 2017 22:20:01 -0600 Subject: [PATCH 08/12] step 4: Code reuse with inheritance - added employee base class --- .../com/com/premaseem/inheritance/Client.java | 13 ++--- .../inheritance/model/Developer.java | 45 ++--------------- .../premaseem/inheritance/model/Employee.java | 50 +++++++++++++++++++ .../com/premaseem/inheritance/model/Hr.java | 47 +++-------------- .../com/premaseem/inheritance/model/QE.java | 47 +++-------------- 5 files changed, 74 insertions(+), 128 deletions(-) create mode 100644 com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java index fded4b6..0b06e78 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java @@ -1,3 +1,9 @@ +/* +@author: Aseem Jain +@title: Design Patterns with Java 9 +@link: https://premaseem.wordpress.com/category/computers/design-patterns/ +@copyright: 2018 Packt Publication +*/ package com.com.premaseem.inheritance; @@ -5,12 +11,7 @@ import com.com.premaseem.inheritance.model.Hr; import com.com.premaseem.inheritance.model.QE; -/* -@author: Aseem Jain -@title: Design Patterns with Java 9 -@link: https://premaseem.wordpress.com/category/computers/design-patterns/ -@copyright: 2018 Packt Publication -*/ + public class Client { public static void main (String[] args) { Developer employee1 = new Developer("Aseem", 20,100); diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java index eb5e452..095bcea 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java @@ -6,56 +6,21 @@ @link: https://premaseem.wordpress.com/category/computers/design-patterns/ @copyright: 2018 Packt Publication */ -public class Developer { - - private String name; - private Float salary; - private Integer workHours; - private Integer rate; +public class Developer extends Employee{ public Developer(String name, Integer workHours, Integer rate) { - this.name = name; - this.workHours = workHours; - this.rate = rate; + super(name, rate, workHours); } @Override public String toString() { return "Developer{" + - "name='" + name + '\'' + + "name='" + getName() + '\'' + ", salary=" + getSalary() + - ", workHours=" + workHours + - ", rate=" + rate + + ", workHours=" + getWorkHours() + + ", rate=" + getRate() + '}'; } - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Float getSalary() { - salary = (float)workHours * rate; - return salary; - } - - public Integer getWorkHours() { - return workHours; - } - - public void setWorkHours(Integer workHours) { - this.workHours = workHours; - } - - public Integer getRate() { - return rate; - } - - public void setRate(Integer rate) { - this.rate = rate; - } } diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java new file mode 100644 index 0000000..55761b7 --- /dev/null +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java @@ -0,0 +1,50 @@ +package com.com.premaseem.inheritance.model; + +/* +@author: Aseem Jain +@title: Design Patterns with Java 9 +@link: https://premaseem.wordpress.com/category/computers/design-patterns/ +@copyright: 2018 Packt Publication +*/ +public class Employee { + + protected String name; + protected Integer workHours; + protected Integer rate; + private Float salary; + + public Employee (String name, Integer rate, Integer workHours) { + this.name = name; + this.rate = rate; + this.workHours = workHours; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Float getSalary() { + salary = (float)workHours * rate; + return salary; + } + + public Integer getWorkHours() { + return workHours; + } + + public void setWorkHours(Integer workHours) { + this.workHours = workHours; + } + + public Integer getRate() { + return rate; + } + + public void setRate(Integer rate) { + this.rate = rate; + } +} diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java index c124df4..8259d6c 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java @@ -6,56 +6,21 @@ @link: https://premaseem.wordpress.com/category/computers/design-patterns/ @copyright: 2018 Packt Publication */ -public class Hr { - - private String name; - private Float salary; - private Integer workHours; - private Integer rate; +public class Hr extends Employee{ public Hr (String name, Integer workHours, Integer rate) { - this.name = name; - this.workHours = workHours; - this.rate = rate; + super(name, rate, workHours); } @Override public String toString() { - return "HR{" + - "name='" + name + '\'' + + return "Hr{" + + "name='" + getName() + '\'' + ", salary=" + getSalary() + - ", workHours=" + workHours + - ", rate=" + rate + + ", workHours=" + getWorkHours() + + ", rate=" + getRate() + '}'; } - public Float getSalary() { - salary = (float)workHours * rate; - return salary; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Integer getWorkHours() { - return workHours; - } - - public void setWorkHours(Integer workHours) { - this.workHours = workHours; - } - - public Integer getRate() { - return rate; - } - - public void setRate(Integer rate) { - this.rate = rate; - } } diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java index 326c5c6..4d4f3fe 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java @@ -6,56 +6,21 @@ @link: https://premaseem.wordpress.com/category/computers/design-patterns/ @copyright: 2018 Packt Publication */ -public class QE { - - private String name; - private Float salary; - private Integer workHours; - private Integer rate; +public class QE extends Employee{ public QE (String name, Integer workHours, Integer rate) { - this.name = name; - this.workHours = workHours; - this.rate = rate; + super(name, rate, workHours); } @Override public String toString() { - return "QE{" + - "name='" + name + '\'' + + return "Developer{" + + "name='" + getName() + '\'' + ", salary=" + getSalary() + - ", workHours=" + workHours + - ", rate=" + rate + + ", workHours=" + getWorkHours() + + ", rate=" + getRate() + '}'; } - public Float getSalary() { - salary = (float)workHours * rate; - return salary; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Integer getWorkHours() { - return workHours; - } - - public void setWorkHours(Integer workHours) { - this.workHours = workHours; - } - - public Integer getRate() { - return rate; - } - - public void setRate(Integer rate) { - this.rate = rate; - } } From 9a26e94533f4e7ac7db5c7319c58c9ba8d6170a9 Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Wed, 27 Dec 2017 22:27:09 -0600 Subject: [PATCH 09/12] step 5: Changes related to salary caused changes in base class and impacted all derived classes ( system broke here ) --- .../src/com/com/premaseem/inheritance/model/Employee.java | 6 +++++- .../src/com/com/premaseem/inheritance/model/Hr.java | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java index 55761b7..c42fa5b 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java @@ -12,11 +12,15 @@ public class Employee { protected Integer workHours; protected Integer rate; private Float salary; + protected Integer baseSalary; + protected Integer bonusPercent; - public Employee (String name, Integer rate, Integer workHours) { + public Employee (String name, Integer rate, Integer workHours,Integer baseSalary,Integer bonusPercent) { this.name = name; this.rate = rate; this.workHours = workHours; + this.baseSalary = baseSalary; + this.bonusPercent = bonusPercent; } public String getName() { diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java index 8259d6c..cdde782 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java @@ -8,8 +8,8 @@ */ public class Hr extends Employee{ - public Hr (String name, Integer workHours, Integer rate) { - super(name, rate, workHours); + public Hr (String name, Integer baseSalary, Integer bonusPercent) { + super(name,null,null, baseSalary, bonusPercent); } @Override From cbad8c2072be57bdfeb1680e113419bd3f1ac8e8 Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Wed, 27 Dec 2017 22:30:04 -0600 Subject: [PATCH 10/12] step 6: Neutralized base class changes and fixed compilation issues - now started getting functionality issues for salary calculation --- .../src/com/com/premaseem/inheritance/model/Developer.java | 2 +- .../src/com/com/premaseem/inheritance/model/QE.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java index 095bcea..257987f 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java @@ -9,7 +9,7 @@ public class Developer extends Employee{ public Developer(String name, Integer workHours, Integer rate) { - super(name, rate, workHours); + super(name, rate, workHours,null,null); } @Override diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java index 4d4f3fe..62b5c48 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java +++ b/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java @@ -9,7 +9,7 @@ public class QE extends Employee{ public QE (String name, Integer workHours, Integer rate) { - super(name, rate, workHours); + super(name, rate, workHours,null,null); } @Override From 12e2574f522bd3137758c7b4f8eb4f7538e4c844 Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Wed, 27 Dec 2017 22:43:06 -0600 Subject: [PATCH 11/12] step 7: Fixed base class for salary calculation ( generated Spaghetti code with if else in base class) --- .../com/{com => }/premaseem/inheritance/Client.java | 10 +++++----- .../premaseem/inheritance/model/Developer.java | 2 +- .../premaseem/inheritance/model/Employee.java | 9 +++++++-- .../com/{com => }/premaseem/inheritance/model/Hr.java | 4 +--- .../com/{com => }/premaseem/inheritance/model/QE.java | 2 +- 5 files changed, 15 insertions(+), 12 deletions(-) rename com.premaseem.inheritance/src/com/{com => }/premaseem/inheritance/Client.java (69%) rename com.premaseem.inheritance/src/com/{com => }/premaseem/inheritance/model/Developer.java (93%) rename com.premaseem.inheritance/src/com/{com => }/premaseem/inheritance/model/Employee.java (81%) rename com.premaseem.inheritance/src/com/{com => }/premaseem/inheritance/model/Hr.java (79%) rename com.premaseem.inheritance/src/com/{com => }/premaseem/inheritance/model/QE.java (93%) diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java b/com.premaseem.inheritance/src/com/premaseem/inheritance/Client.java similarity index 69% rename from com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java rename to com.premaseem.inheritance/src/com/premaseem/inheritance/Client.java index 0b06e78..750c0d9 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/Client.java +++ b/com.premaseem.inheritance/src/com/premaseem/inheritance/Client.java @@ -5,18 +5,18 @@ @copyright: 2018 Packt Publication */ -package com.com.premaseem.inheritance; +package com.premaseem.inheritance; -import com.com.premaseem.inheritance.model.Developer; -import com.com.premaseem.inheritance.model.Hr; -import com.com.premaseem.inheritance.model.QE; +import com.premaseem.inheritance.model.Developer; +import com.premaseem.inheritance.model.Hr; +import com.premaseem.inheritance.model.QE; public class Client { public static void main (String[] args) { Developer employee1 = new Developer("Aseem", 20,100); QE employee2 = new QE("Aseem", 20,100); - Hr employee3 = new Hr("Aseem", 20,100); + Hr employee3 = new Hr("Sony",1000,10); System.out.println("Inheritance concept"); System.out.println(employee1); diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java b/com.premaseem.inheritance/src/com/premaseem/inheritance/model/Developer.java similarity index 93% rename from com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java rename to com.premaseem.inheritance/src/com/premaseem/inheritance/model/Developer.java index 257987f..de4da8c 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Developer.java +++ b/com.premaseem.inheritance/src/com/premaseem/inheritance/model/Developer.java @@ -1,4 +1,4 @@ -package com.com.premaseem.inheritance.model; +package com.premaseem.inheritance.model; /* @author: Aseem Jain diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java b/com.premaseem.inheritance/src/com/premaseem/inheritance/model/Employee.java similarity index 81% rename from com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java rename to com.premaseem.inheritance/src/com/premaseem/inheritance/model/Employee.java index c42fa5b..43dd0f9 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Employee.java +++ b/com.premaseem.inheritance/src/com/premaseem/inheritance/model/Employee.java @@ -1,4 +1,4 @@ -package com.com.premaseem.inheritance.model; +package com.premaseem.inheritance.model; /* @author: Aseem Jain @@ -31,8 +31,13 @@ public void setName(String name) { this.name = name; } + public Float getSalary() { - salary = (float)workHours * rate; + if (this.getClass().getName().equalsIgnoreCase("com.premaseem.inheritance.model.Hr") ){ + salary = (float) baseSalary + bonusPercent; + }else{ + salary = (float) workHours * rate; + } return salary; } diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java b/com.premaseem.inheritance/src/com/premaseem/inheritance/model/Hr.java similarity index 79% rename from com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java rename to com.premaseem.inheritance/src/com/premaseem/inheritance/model/Hr.java index cdde782..94b6397 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/Hr.java +++ b/com.premaseem.inheritance/src/com/premaseem/inheritance/model/Hr.java @@ -1,4 +1,4 @@ -package com.com.premaseem.inheritance.model; +package com.premaseem.inheritance.model; /* @author: Aseem Jain @@ -17,8 +17,6 @@ public String toString() { return "Hr{" + "name='" + getName() + '\'' + ", salary=" + getSalary() + - ", workHours=" + getWorkHours() + - ", rate=" + getRate() + '}'; } diff --git a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java b/com.premaseem.inheritance/src/com/premaseem/inheritance/model/QE.java similarity index 93% rename from com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java rename to com.premaseem.inheritance/src/com/premaseem/inheritance/model/QE.java index 62b5c48..62463c2 100644 --- a/com.premaseem.inheritance/src/com/com/premaseem/inheritance/model/QE.java +++ b/com.premaseem.inheritance/src/com/premaseem/inheritance/model/QE.java @@ -1,4 +1,4 @@ -package com.com.premaseem.inheritance.model; +package com.premaseem.inheritance.model; /* @author: Aseem Jain From 31234c7f58020ce659d190c26778edc9bfe30c8f Mon Sep 17 00:00:00 2001 From: Aseem Jain Date: Sun, 31 Dec 2017 18:05:27 -0600 Subject: [PATCH 12/12] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 0db5e92..791d600 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +# Video 1.8: Issues faced due to force fitting everything in object inheritance +In the branch, inheritance is expalined with its issues. Needs Java 9 and mongodb setup to run the example. + # Definition of inheritance Inheritance is a mechanism in which one object acquires all the properties and behaviours of the parent object. Inheritance allows programmers to create classes that are built upon existing classes, to specify a new implementation to maintain the same behaviour to reuse code.