2014-09-11 3 views
1

Итак, мое задание - написать класс посещения с использованием классов «Доктор» и «Пациент» (со своими собственными объектами), в котором есть время и дата, а также ссылка на объекты «Доктор» и «Пациент», которые он передал, чтобы он мог возвращать те же «черты», или переменные классов «Доктор» и «Пациент» (т. е. объект «Доктор» имеет имя, поэтому объект «Посещение» должен содержать имя этого доктора и другие переменные). Сначала я написал этот класс Visit с его собственными методами getSpecialty и getName, создающими эти переменные в «Доктор» и Пациентская общественность. Инструктор лаборатории хочет, чтобы эти переменные сохранялись конфиденциальными и вместо реальных методов использовали фактические методы от доктора и Пациента.Как вы используете метод из другого класса в классе Java?

Одна вещь, которую я исследовал (это мой первый прогон класса Объекты в качестве ссылки и использование методов этого класса), сказал, что если у вас есть ссылка, которую вы можете сказать как cbeta.whatevermethod(), но я не смог ее сделать Работа. Java: How to access methods from another class

Я также не знаю, имел ли он значение для того, чтобы метод находился в классе «Посещение» или в главном классе, который проходит «Посетите объект« Доктор »и« Пациент »(но если вы вызовете методы« Доктора и пациента »в основном класс в любом случае, нет смысла передавать объекты в класс Visit.

Я знаю, что это классная работа, поэтому, если вы не хотите отвечать на него мне, это нормально, я возьму любую помощь или руководство, потому что я не полностью понимаем переменную область видимости и объекты класса, и нам не дано время догонять. Большое спасибо^_^

Номер этого тестера (основного класса):

public class tester 
{ 
    public static void main(String[] args) 
    { 
     Doctor doctorStrange 
      = new Doctor("General Practitioner", 50.0); 
      doctorStrange.setName("Doctor Strange"); 

     Doctor doctorFate 
      = new Doctor("Pediatrician"); 
      doctorFate.setName("Doctor Fate"); 

     Doctor doctorLight 
      = new Doctor(); 
      doctorLight.setName("Doctor Light"); 

     Patient Thor 
      = new Patient(42154); 
      Thor.setName("Thor"); 

     Patient Bruce 
      = new Patient(67245); 
      Bruce.setName("Bruce"); 

     Patient Clint 
      = new Patient(); 
      Clint.setName("Clint"); 

     Visit visit1 = new Visit(doctorStrange, Thor, "9:53 AM, 2/27/2014"); 
     Visit visit2 = new Visit(doctorStrange, Bruce, "4:22 PM, 7/13/2017"); 
     Visit visit3 = new Visit(doctorFate, Clint, "8:59 AM, 5/05/2015"); 

     System.out.println("First visit: Doctor name is " + doctorStrange.getName() 
         + " and Patient name is " + Thor.getName()); 
} 
} 

Класс доктор (я могу поставить пациента здесь, если нужно)

public class Doctor extends Person 
{ 
public double visitFee; 
public String specialty; 
public String name; 

public Doctor() 
{ 
    visitFee = 0.0; 
    specialty = "unknown"; 
} 

public Doctor (String type) 
{ 
    specialty = type; 
    visitFee = 0.0; 
} 

public Doctor (double initialFee) 

{ 
    visitFee = initialFee; 
    specialty = "unknown"; 
} 

public Doctor (String type, double initialFee) 
{ 
    specialty = type; 
    visitFee = initialFee; 
} 

    public void setName(String newName) 
{ 
    name = newName; 
} 

public String getSpecialty() 
{ 
    return specialty; 
} 

public double getVisitFee() 
{ 
    return visitFee; 
} 

public String getName() 
{ 
    return name; 
} 
} 

И, наконец, класс визит:

общественного класса Посещение { частных Струнный timeDate; частный доктор d; частный Пациент p;

public Visit() 
{ 
    timeDate = "Time and Date of visit unknown"; 

} 

public Visit (Doctor doc, Patient pat, String thetimeDate) 
{ 
    timeDate = thetimeDate; 
    d = doc; 
    p = pat; 
} 
} 
+0

Я думаю, что ваша самая большая проблема в том, что вы не можете понять свое задание. Поэтому на этой заметке, пожалуйста, проясните это полностью для нас. Что конкретно *** *** ваши письменные инструкции говорят, что вам нужно иметь в Визите, и как вы застреваете? Ваш вопрос не ясен, по крайней мере, не мне. Вы, конечно же, ** должны ** прибегать к некоторым методам, и вам, вероятно, придется вызвать методы доктора и пациента внутри этих методов посещения. –

+0

Извините, я отредактировал первый абзац, чтобы надеяться сделать его более ясным. По существу, классу посещения необходимо передать ссылку на классы «Доктор» и «Пациент» [мой конструктор - это публичный визит (Doctor doc, Patient pat, String thetimeDate)] И мне нужно иметь возможность использовать оригинальные методы (например, getName) из класса Doctor или Patient в моем классе Visit, чтобы вернуться к моей основной информации о программе, например, имени. Надеюсь, что это яснее. Я тоже ценю вашу помощь :) – user3505195

ответ

0

Похоже, что вы должны писать некоторые методы-обертки, которые раскрывают методы составных полей класса посещения.

Например, скажите, что у вас есть класс Dog, который имеет поле имени.

class Dog { 
    private String name; 

    public Dog(String name) { 
     this.name = name; 
    } 


    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

И предположим, что у вас есть классный мальчик, который «владеет» собакой - у кого есть поле для собак. Вы можете дать Boy a getDogName() метод и вернуть ему значение, возвращенное из метода getName() собаки. Например:

class Boy { 
    private Dog dog; 

    public Boy(Dog dog) { 
     this.dog = dog; 
    } 

    public String getDogName() { 
     return dog.getName(); 
    } 
} 

Похоже, что вам нужно сделать что-то подобное для вашего Visit класса, дать посещения методы, которые вызывают и возвращают результаты из методов его составных полей.

Обратите внимание: я использую пример, отличный от вашего, поскольку ваш вопрос связан с домашним заданием, но я верю, что вы можете обобщить концепцию.

+0

Да, это имеет большой смысл и должно быть более чем достаточно, я попробую сейчас. Спасибо! Для моего собственного понимания, почему переменные все еще остаются частными? Я получаю, что эта собака в этом классе является ссылкой на объект Dog, на который ссылается собака, но она все еще находится вне класса Dog – user3505195

+0

@ user3505195: почти все переменные должны быть частными. Таким образом, ваш класс может контролировать видимость состояний переменной с помощью методов getter и setter, которые могут контролировать то, что можно увидеть и что можно сделать. Я не понимаю, что вы имеете в виду, когда переменная собаки находится вне класса Dog. Большинство переменных используются вне их собственных классов. –

+0

Nevermind aboout the bit, я смутил себя там (я думал о методах класса Dog, обращающихся к частным переменным, но, очевидно, эти методы могут получить к ним доступ, потому что они в классе собаки, глупая ошибка). Я действительно ценю все объяснения, и, написав код, я чувствую, что больше понимаю методы Wrapper и область видимости. Я прочитал в своей книге CSI (я только начинаю свой класс CSII) об методах оболочки, но когда я прочитал, что у меня действительно не было понятия о передаче объектов класса и доступе к методам другого класса, так что это не имело смысла в время – user3505195

0

Ваш вопрос немного запутанный. Но я полагаю, вы спрашиваете, как получить доступ к функциям врача/пациента через класс посещения?

Если это так, вам нужно сначала добавить некоторые публичные функции в класс посещения.

+0

Нет, не делайте ложных домашних заданий, пожалуйста! Дайте концепции (которые я уже сделал), но не прямой код. –

+0

Спасибо, я ценю помощь и код. Я действительно чувствую, что теперь я понимаю это лучше :) – user3505195

+0

мой плохой, я удалил код. Ясно, что сегодня не думаем. – Jerry

Смежные вопросы