Jump to content
AJBM

Restriçoes

Recommended Posts

AJBM

Boas!

eu tenho que definir uma pessoa,  por nome, idade, sexo, pai, e mãe. . Os atributos de

uma pessoa devem ser de acesso o mais restrito possível. a minha dificuldade esta nisto

Evitar que o pai ou a mãe de uma pessoa possua uma idade inferior à do filho, eu ja fiz isto

public class Pessoa {
   private String nome;
   private int idade;
   private String pai;
   private  String mae;
   private char sexo;
    Pessoa(String nome,int idade,String pai,String mae,char sexo){
        this.nome=nome;
        this.idade=idade;
        this.pai=pai;
        this.mae=mae;
        this.sexo=sexo; 
    }
    public void setnome(String nome){
        this.nome=nome;    
    }
    public void setidade(int idade){
           
       this.idade=idade;
       
        
    }
    public void setpai(String pai){
        this.pai=pai;
    }
    public void setmae(String mae){
        this.mae=mae;
    }
public void setsexo(char sexo){
    this.sexo=sexo;
    
}
public String getnome(){
    return nome;
}
public int getidade(){
    return idade;
    
}
public String getpai(){
    return pai;
}
public String getmae(){
    return mae;
}
public char getsexo(){
    return sexo;
}
}

public class PessoaDemo {
  
    public static void main(String[] args) {
        Pessoa filho;
        Pessoa pai;
        Pessoa mae;
        filho= new Pessoa("Antonio",18,"Antonio","Maria",'M');
        pai=   new Pessoa(filho.getnome(),10,"Jose","Ana",'M');
        mae=   new Pessoa(filho.getmae(),60,"Jose","Ana",'F');
        System.out.println(filho.getnome());
        System.out.println(filho.getidade());
        System.out.println(filho.getpai());
        System.out.println(filho.getmae());
        System.out.println(filho.getsexo());

Eu tenho que fazer a restricao na classe pessoa mas nao consigo fazer alguem me pode ajudar

Share this post


Link to post
Share on other sites
HappyHippyHippo

1º - deverás implementar os getter's

2º - os atributos pai e mão deverão ser Pessoa e não strings ....

3º  podes usar exceptions para evitar a atribuição de um pai ou mão inválido


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
AJBM

e como e que eu faço a restricao eu sei que e na classe pessoa no metodo setidade mas nao consigo fazer da-me sempre erro

Share this post


Link to post
Share on other sites
HappyHippyHippo

tens três problemas :

- associar um pai ou mãe que tem uma idade inferior

- alterar a idade do filho ficando esta maior que a idade de algum dos pais

- alterar a idade ao pai ou à mãe inferior do que o filho

para resolver o primeiro problema terás somente de verificar que o pai ou mãe a serem associados teem uma idade superior

para resolver o segundo problema tem de verificar se a idade a ser atribuida continua a ser inferior aos dois pais

para resolver o terceiro (este já é um pouco mais complicado), tens de ter uma lista de todos os filhos da pessoa, e verificar que todos eles teem idade inferior a ser atribuida.


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
AJBM

Boas!

eu tenho que definir uma pessoa,  por nome, idade, sexo, pai, e mãe. . Os atributos de

uma pessoa devem ser de acesso o mais restrito possível. a minha dificuldade esta nisto

Evitar que o pai ou a mãe de uma pessoa possua uma idade inferior à do filho, eu ja fiz isto

public class Pessoa {
   private String nome;
   private int idade;
   private String pai;
   private  String mae;
   private char sexo;
    Pessoa(String nome,int idade,String pai,String mae,char sexo){
        this.nome=nome;
        this.idade=idade;
        this.pai=pai;
        this.mae=mae;
        this.sexo=sexo; 
    }
    public void setnome(String nome){
        this.nome=nome;    
    }
    public void setidade(int idade){
           
       this.idade=idade;
       
        
    }
    public void setpai(String pai){
        this.pai=pai;
    }
    public void setmae(String mae){
        this.mae=mae;
    }
public void setsexo(char sexo){
    this.sexo=sexo;
    
}
public String getnome(){
    return nome;
}
public int getidade(){
    return idade;
    
}
public String getpai(){
    return pai;
}
public String getmae(){
    return mae;
}
public char getsexo(){
    return sexo;
}
}

public class PessoaDemo {
  
    public static void main(String[] args) {
        Pessoa filho;
        Pessoa pai;
        Pessoa mae;
        filho= new Pessoa("Antonio",18,"Antonio","Maria",'M');
        pai=   new Pessoa(filho.getnome(),10,"Jose","Ana",'M');
        mae=   new Pessoa(filho.getmae(),60,"Jose","Ana",'F');
        System.out.println(filho.getnome());
        System.out.println(filho.getidade());
        System.out.println(filho.getpai());
        System.out.println(filho.getmae());
        System.out.println(filho.getsexo());

Eu tenho que fazer a restricao na classe pessoa mas nao consigo fazer alguem me pode ajudar

eu no setidade fiz isto

if(pai!=null&&mae!=null){
if(pai.idade>idade&&mae.idade>idade){
this.idade=idade;}
System.exit(0);}[/quote] mas nunca me da a idade sai sempre?

Share this post


Link to post
Share on other sites
joelbrito

Um filho é uma pessoa, um pai é uma pessoa e uma mãe também é uma pessoa.

Isto não é um caso para usar subclasses?


Engenharia de Sistemas Informáticos @ IPCA

"Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs

Share this post


Link to post
Share on other sites
Baderous

Um filho é uma pessoa, um pai é uma pessoa e uma mãe também é uma pessoa.

Isto não é um caso para usar subclasses?

Olha para a tua 1ª frase e vê se descreveste de forma diferente algum dos 3 elementos em questão. A mim parece-me que não: são todos pessoas e nenhum deles tem alguma especificidade extra relativamente aos outros.

Share this post


Link to post
Share on other sites
joelbrito

Olha para a tua 1ª frase e vê se descreveste de forma diferente algum dos 3 elementos em questão. A mim parece-me que não: são todos pessoas e nenhum deles tem alguma especificidade extra relativamente aos outros.

Pois, vendo bem é isso...

E quer seja mãe ou pai também tem uma mãe e um pai


Engenharia de Sistemas Informáticos @ IPCA

"Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs

Share this post


Link to post
Share on other sites
AJBM

e eu nao uso subclasses tenho a classe pessoa e depois tenho variaveis do tipo pessoa, mas a minha duvida esta em como fazer a restricao as idades

Share this post


Link to post
Share on other sites
HappyHippyHippo
class Pessoa {
  ...
  protected int idade;
  protected List<Pessoa> filhos;
  protected Pessoa pai;
  protected Pessoa mae;
  ...
  public int getIdade() {
    return idade;
  }
  ...
  public void setIdade(int idade) {
    // verifica se todos os filhos teem uma idade inferior
    Iterator<Pessoa> iter = this.filhos.iterator();
    while(iter.hasNext()) {
      iter = iter.next();
      if (iter.getIdade() >= idade)
        throw new Exception("existe um filho com idade igual ou superior à atribuida");
    }

    this.idade = idade;
  }
  ...
  public void setPai(Pessoa pai) {
    if (pai.getIdade() <= this.idade)
        throw new Exception("a idade do pai não pode ser igual ou inferior ao do filho");
    this.pai = pai;
  }
  ...
  public void setMae(Pessoa mae) {
    if (mae.getIdade() <= this.idade)
        throw new Exception("a idade da mãe não pode ser igual ou inferior ao do filho");
    this.mae = mae;
  }
  ...
  public void addChild(Pessoa filho) {
    if (filho.getIdade() >= this.idade)
        throw new Exception("a idade do filho não pode ser igual ou superior ao do progenitor");
    this.filhos.add(filho);
  }
};


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.