Skip to main content

Polymorphism

package polymorphismsample;

/**
 *
 * @author Nurhak
 */
public class PolymorphismSample {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ComputerEngineer ce = new ComputerEngineer("Nurhak", "Kaya", "IT");
        ce.addProgrammingLang("Java");
        ce.addProgrammingLang("C#");
        Accountant ac = new Accountant("Jessie", "J");
        Manager mn = new Manager("Michael", "M");
        mn.addEmployee(ce);
        mn.addEmployee(ac);
        mn.getReport();
    }
}

package polymorphismsample;

/**
 *
 * @author Nurhak
 */
public class Employee {

    protected String name;
    protected String surname;

    public Employee(String name, String surname) {
        this.name = name;
        this.surname = surname;
    }

    public void getReport() {
        System.out.println("Name: " + name + " Surname: " + surname);
    }
}

package polymorphismsample;

/**
 *
 * @author Nurhak
 */
public class Engineer extends Employee {

    protected String[] projects;
    protected String department;
    protected int projectCount;

    public Engineer(String name, String surname, String department) {
        super(name, surname);
        this.department = department;
        this.projects = new String[5];
        this.projectCount= 0;
    }

    public void addProject(String project) {
        projects[projectCount] = project;
        projectCount++;

    }

    @Override
    public void getReport() {
        super.getReport();
        System.out.println("Department: " + department);
        System.out.println("Projects: ");
        for (int i = 0; i < projectCount; i++) {
            System.out.println("\t" + projects[i]);
        }
    }
}

package polymorphismsample;

/**
 *
 * @author Nurhak
 */
public class ComputerEngineer extends Engineer {

    protected String[] programmingLangs;
    protected int programmingLangCount;

    public ComputerEngineer(String name, String surname, String department) {
        super(name, surname, department);
        this.programmingLangs = new String[5];
        this.programmingLangCount = 0;
    }

    public void addProgrammingLang(String programmingLangName) {
        programmingLangs[programmingLangCount] = programmingLangName;
        programmingLangCount++;
    }

    @Override
    public void getReport() {
        super.getReport();
        System.out.println("Title: Computer Engineer");
        System.out.println("Programming Languages: ");
        for (int i = 0; i < this.programmingLangCount; i++) {
            System.out.println("\t" + programmingLangs[i] + " ");
        }
    }
}

package polymorphismsample;

/**
 *
 * @author Nurhak
 */
public class Accountant extends Employee {

    private String[] accountingPrograms;
    private int accountingProgramCount;

    public Accountant(String name, String surname) {
        super(name, surname);
        this.accountingPrograms = new String[5];
        this.accountingProgramCount = 0;
    }

    public void addAccountingProgram(String accountingProgram) {
        accountingPrograms[accountingProgramCount] = accountingProgram;
        accountingProgramCount++;
    }

    @Override
    public void getReport() {
        super.getReport();
        System.out.println("Title: Accountant");
        System.out.println("Accounting Programs: ");
        for (int i = 0; i < accountingProgramCount; i++) {
            System.out.println("\t" + accountingPrograms[i]);
        }
    }
}

package polymorphismsample;

/**
 *
 * @author Nurhak
 */
public class Manager extends Employee {

    private Employee[] employees;
    private int employeeCount;

    public Manager(String name, String surname) {
        super(name, surname);
        this.employees = new Employee[5];
        this.employeeCount = 0;
    }

    public void addEmployee(Employee employee) {
        employees[employeeCount] = employee;
        employeeCount++;
    }

    @Override
    public void getReport() {
        for (int i = 0; i < employeeCount; i++) {
            employees[i].getReport();
            System.out.println(employees[i]);
        }
    }
}

Comments

Popular posts from this blog

How to fix Git push error: "RPC failed; curl 56 HTTP/2 stream 7 was reset send-pack: unexpected disconnect while reading sideband packet fatal: the remote end hung up unexpectedly"

Problem Today I saw the following problem when I tried to push my changes to a Git server after doing some work for upgrading an Umbraco v7 project to v8.18.8.  Possible reasons After some investigations, it seems like this could be because of the following reasons; Git is not happy with the amount of changes that are being pushed into the server.  There are possible limitations on the server about the size/amount of files that you can push. Your internet connection is not good and stable enough. Your Git client's version is old. Solution options For me, the easiest option was connecting to another Wifi and trying again. Apparently, this option helped quite a few people, so it is worth giving it a try. Unfortunately, it didn't work for me. A bad internet connection wasn't an option for me either, as my internet is pretty fast (500 Mbps). Similarly, my Git client version was the latest version (git version 2.41.0.windows.3).  On StackOverflow, there were a lot of recommend...

How to fix "Microsoft SQL Error SQL71564: Error validating element [USERNAME]: The element [USERNAME] has been orphaned from its login and cannot be deployed."

I needed to export a database in BACPAC format today in order to restore it somewhere else, and I encountered the following error. To resolve this issue, I deleted all of the users mentioned in the error log. After successfully creating the BACPAC file, I used it to create a new database with no problems. Error: TITLE: Microsoft SQL Server Management Studio ------------------------------ One or more unsupported elements were found in the schema used as part of a data package. Error SQL71564: Error validating element [USER1]: The element [USER1] has been orphaned from its login and cannot be deployed. Error SQL71564: Error validating element [USER2]: The element [USER2] has been orphaned from its login and cannot be deployed. Error SQL71564: Error validating element [USER3]: The element [USER3] has been orphaned from its login and cannot be deployed. Error SQL71564: Error validating element [USER4]: The element [USER4] has been orphaned from its login and cannot be deployed. Error SQL71...

Umbraco lifehack: How to setup anchor/jump links in Umbraco without making code changes

Today one of my clients created a ticket asking whether it is possible to set up anchor/jump links for an Umbraco content page so that they could link different sections of the page together. This is a common scenario for most Content editors and it should be super easy with any CMS platform, right? Houston, we got a problem! Now an anchor or page jump link is a special URL that takes you to a specific place on a page and it normally requires a unique HTML element ID to link different parts of a page.  When I investigated my issue, I realised that the page sections of the Umbraco page didn't have unique IDs.  View Source Code comes to the rescue In order to resolve the issue without any code changes, I decided to update the content using the built-in View Source Code feature of Umbraco CMS. This feature is available on built-in property editors, like Rich Text Editor and is super handy for checking the code that Umbraco generates for your Front-end website and making minor...