Имеет отношения и правильную практику - PullRequest
0 голосов
/ 03 ноября 2011

В последнее время я делаю упражнения по кодированию, которые мне нужны, чтобы создать свой проект, и до сих пор я практикую его с приведенным ниже кодом, и я хочу спросить: есть ли у этого отношения?я делаю правильную практику?посмотрите на мой код, извините за мой плохой английский

public class Personal {

        private String firstName;
        private String middleInitial;
        private String lastName;
        private int age;

        public Personal(String firstName,String middleInitial , String lastName , int age){
            setFirstName(firstName);
            setMiddleInitial(middleInitial);
            setLastName(lastName);
            setAge(age);
        }

        public void setFirstName(String firstName){
            this.firstName = firstName;
        }

        public String getFirstName(){
            return firstName;
        }

        public void setMiddleInitial(String middleInitial){
            this.middleInitial = middleInitial;
        }

        public String getMiddleInitial(){
            return middleInitial;
        }

        public void setLastName(String lastName){
            this.lastName = lastName;
        }

        public String getLastName(){
            return lastName;
        }

        public void setAge(int age){
            this.age = age;
        }

        public int getAge(){
            return age;
        }

        public String toString(){
            return String.format("First Name: "+getFirstName()+"\nMiddle Initial: "+getMiddleInitial()+
                                    "\nLast Name: "+getLastName()+"\nAge: "+getAge());
        }
}

Контактный класс

public class Contact {
    private String address;
    private String email;
    private String contactNumber;

    public Contact(String address,String contactNumber, String email){
        setAddress(address);
        setContactNumber(contactNumber);
        setEmail(email);
    }

    public void setAddress(String address){
        this.address = address;
    }

    public String getAddress(){
        return address;
    }

    public void setEmail(String email){
        this.email = email;
    }

    public String getEmail(){
        return email;
    }

    public void setContactNumber(String contactNumber){
        this.contactNumber = contactNumber;
    }

    public String getContactNumber(){
        return contactNumber;
    }

    public String toString(){
        return String.format("Address: "+getAddress()+"\nContact Number: "+getContactNumber()+
                                "\nEmail Address: "+getEmail());
    }
}

Сотрудник класса

public class Employee {
    private Personal personal;
    private Contact contact;

    public Employee(Personal personal, Contact contact){
        this.personal = personal;
        this.contact = contact;
    }

    public void setFirstName(String firstName){
        this.personal.setFirstName(firstName);
    }

    public String toString(){
        return String.format(personal.toString()+contact.toString());
    }
}

И тестовый класс

public class TestClass {

    public static void main(String[] args){
        Personal personalHerp = new Personal("John","M","Doe",18);
        Contact contactHerp = new Contact("88 Herp Derp St U mad New york","724-15-70","fido.com");
        Employee employeeHerp = new Employee(personalHerp,contactHerp);
        System.out.println(employeeHerp);
    }
}

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Ну, поскольку Employee не расширяется Personal, то имеет a Personal и Contact.

Полагаю, вы бы предпочли от Employee до быть a Personal и, следовательно, это должно выглядеть так:

public class Employee extends Personal {
  private Contact contact;
  ...
}

Итак, подведем итог:

  • is-a означает, что класс / объект расширяет другой класс или реализует интерфейс, т. Е. A is-a B, если A extends B или A implements B
  • has-a означает, что класс / объект имеет переменную этого типа, например Contact contact в вашем Employee классе, что означает Employee has-a contact.
0 голосов
/ 04 ноября 2011

Да, это отношения "есть" (в точности, как мы обсуждали в вашем другом вопросе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...