Boa noite!
Tentei de várias formas colocar para funcionar o método + setMatricula (String s : int) void, mas não estou conseguindo. Coloquei o modelo de classes em anexo para melhor entendimento.
Att.
Victor Almeida
Boa noite!
Tentei de várias formas colocar para funcionar o método + setMatricula (String s : int) void, mas não estou conseguindo. Coloquei o modelo de classes em anexo para melhor entendimento.
Att.
Victor Almeida
O que você já tentou? Aparentemente não tem nenhum mistério, você implementa como qualquer outro método. Posta o seu código.
[code]/*
public class Pessoa {
private String nome;
private String cPF;
public abstract String getMatricula();
public abstract void setMatricula (String s); //ele fala que tem que receber a String s como int no modelo de classes, não sei muito bem oq fazer.
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getcPF() {
return cPF;
}
public void setcPF(String cPF) {
this.cPF = cPF;
}
}[/code]
Boa noite Victor A.
Primeiramente, para ter métodos abstratos a classe tem que ser abstrata. E neste caso nenhuma das Classes são abstratas, pois se fosse ela seria identificada com o nome em Itálico.
Porém os métodos estão sendo identificados como abstratos, métodos estes setMatricula(String s:Int):void e +getMatricula():String.
Segundo, a descrição do método setMatricula(String s:int):void está incompleta, pois está faltando o nome a variável do tipo int.
Para criar este método seguindo este esquema ele ficaria assim:
public abstract void getMatricula(int String s);
Então tem que verificar isto.
O que está errado
Metodos abstratos só existem em Classes abstratas.
A assinatura deste metodo (setMatricula(String s:int):void) na UML está incorreto
Então o que pode ser feito:
Clocar a Classe pessoa com Abstrata (Elas não poderão ser Instanciadas);
Retirar o tipo inteiro ou colocar uma variável para referenciar ao tipo;
[color=red]PS.[/color] Posso estar enganado, se eu estiver por favor me Corrija!
Boa noite Victor A.
Primeiramente, para ter métodos abstratos a classe tem que ser abstrata. E neste caso nenhuma das Classes são abstratas, pois se fosse ela seria identificada com o nome em Itálico.
Porém os métodos estão sendo identificados como abstratos, métodos estes setMatricula(String s:Int):void e +getMatricula():String.
Segundo, a descrição do método +setMatricula(String s:int):void está incompleta, pois está faltando o nome a variável do tipo int.
Para criar este método seguindo este esquema ele ficaria assim:
public abstract void getMatricula(int String s);
Então tem que verificar isto.
O que está errado
Metodos abstratos só existem em Classes abstratas.
A assinatura deste metodo (setMatricula(String s:int):void) na UML está incorreto
Então o que pode ser feito:
Clocar a Classe pessoa com Abstrata;
Retirar o tipo inteiro ou colocar uma variável para referenciar ao tipo;
[color=red]PS.[/color] Posso estar enganado, se eu estiver por favor me Corrija!
Boa noite,
Então…se eu coloco public abstract void setMatricula (int String s);
não consigo rodar.
O netbeans fala que é esperado um ‘)’.
Att.
Victor Almeida
Porque o método não pode receber como argumento uma variável do tipo int String, ou a variável é um objeto do tipo String ou ela pertence ao tipo primitivo int.
Portanto, a sintaxe pode ser de um dos métodos seguintes, também achei confusa a notação UML, porém, como não tenho muito conhecimento nesta parte, prefiro citar apenas a sintaxe do método
//Alternativa 1
public abstract void setMatricula(String mat); //recebe uma string como argumento
//Alternativa 2
public abstract void setMatricula(int mat); //recebe um inteiro como argumento
E a classe, para conter métodos abstratos, deve ser abstrata.
abraços
Como eu disse acima, você tem duas formas para tirar esta confusão das UML
//Adicionar uma variável para referenciar ao tipo int
public abstract void setMatricula (int i, String s);
//Retirar o tipo int
public abstract void setMatricula (String s);
Se isto for um tipo Homework e tiver tempo de tirar duvida com o professor (Tire!), se não tiver como faça das duas maneiras e para sair melhor ainda faça um terceiro modo
//Como parâmetro um int
public abstract void setMatricula (int s)
Abrass…
Qualquer coisa é só falar por aqui, sempre tem pessoas dispostas a ajudar…
ve se isso ajuda:
MeuGenerico
package usandoclassesabstratas;
public abstract class MeuGenerico
{
private String nome;
private String tipo;
/**
* @return the nome
*/
public String getNome()
{
return nome;
}
/**
* @param nome the nome to set
*/
public void setNome(String nome)
{
this.nome = nome;
}
/**
* @return the tipo
*/
public String getTipo()
{
return tipo;
}
/**
* @param nome the nome to set
*/
public void setTipo(String tipo)
{
this.tipo = tipo;
}
}
Carro:
package usandoclassesabstratas;
// aqui resolvi implementar.
public class Carro extends MeuGenerico
{
public String getNome()
{
//
return super.getNome() + "_classe1";
}
public void setTipo(String vazia)
{
//super.setNome(vazia+"_classe1") ;
}
}
Caminhão:
package usandoclassesabstratas;
// aqui não resolvi implementar.
public class Caminhao extends MeuGenerico
{
}
Main e lógica de ação:
package usandoclassesabstratas;
public class UsandoClassesAbstratas
{
public void printNome(MeuGenerico meugenerico)
{
System.out.println(meugenerico.getNome());
}
public void setAndPrintNome(MeuGenerico meugenerico, String novoNome)
{
System.out.println("Nome antigo: "+meugenerico.getNome());
System.out.println("setando novo nome:" + novoNome);
meugenerico.setNome(novoNome);
System.out.println("pegando nome: "+meugenerico.getNome());
}
public void printTipo(MeuGenerico meugenerico)
{
System.out.println(meugenerico.getNome());
}
public void setAndPrintTipo(MeuGenerico meugenerico, String novoTipo)
{
System.out.println("Tipo antigo: "+meugenerico.getTipo());
System.out.println("setando novo Tipo:" + novoTipo);
meugenerico.setTipo(novoTipo);
System.out.println("pegando Tipo: "+meugenerico.getTipo());
}
public static void main(String[] args)
{
UsandoClassesAbstratas logica = new UsandoClassesAbstratas();
Carro c1 = new Carro();
c1.setNome("carro1");
c1.setTipo("carro");
Caminhao c2 = new Caminhao();
c2.setNome("caminhao2");
c2.setTipo("caminhao2");
logica.printNome(c1);
logica.printNome(c2);
}
}
Boa noite,
Oq realmente está confuso é o UML, pelo que eu entendi ele quer que o método receba a String da matricula do professor ou aluno como int. Não consigo visualizar o propósito disso, mas tudo bem.
Pensei que poderia haver alguma forma de colocar isso logo no método abstrato - já que estava representado no UML, mas vejo que não.
Obrigado pela ajuda.
Se eu tiver novas dificuldades que não consiga solucionar volto a postar.
Mas se ele colocou isto na UML tenho uma certeza de 90% que esta sintaxe não existe nem na UML.
Você disse,Não consigo visualizar o propósito disso, discordo!
Consegui enxergar algo: Ele pode estar colocando isto para vocês entenderem que a matricula tem que ser compostas por números inteiros.
E com isto ele queira que vocês tratem isto.
Isto foi apenas uma abstração que eu tive.
Abrass