Bem, a seguinte situação ilustra uma agregação: voce tem uma classe Familia e uma segunda classe Pessoa, todos sabem que uma familia é composta por muitas pessoas (uma Collection de pessoas), sendo assim, temos uma relação de agregacao entre as classes Familia e Pessoa, analogamente ocorre o mesmo com as classes Computador e Memoria e nada impede que um computador possua um conjunto contendo uma unica Memoria (minha maquina é assim…rsrr).
Ate
tnaires
André Fonseca:
Oi Tarso
Pra mim isso se trata de uma Agregação, já que tirando uma memória do computador ela continua existindo e pode ser colocada em outro computador…
Pelo menos acho que essa seria a opinião que andei vendo por ai…
Eu juraria de pé junto que seria composição, mas depois da aula conversei com o professor e percebi que eu estava errado.
Eu pensava que composição ocorria quando o todo não poderia existir sem suas partes. No exemplo, não faz sentido a existência de um computador sem a sua memória - ele não funciona. Aí onde estava o meu equívoco: na composição, é a parte que não pode existir sem o todo, e não o contrário. Por exemplo, não há razão de existência para os itens de uma nota fiscal sem sua nota correspondente. Nesse caso, uma nota é composta de itens.
Conforme você mencionou - e conforme seus links apontam - na agregação o todo pode existir sem a parte. Logo, no caso do Computador --> Memória, a resposta certa é agregação.
tnaires
Essa definição não está precisa. Tanto agregação e composição são classes de um relacionamento TEM-UM. No caso de Família e Pessoa, tudo depende da seguinte pergunta: uma pessoa existe sem uma família? Caso sim, é agregação; caso contrário, composição.
igorCouto
Pessoal,
Agregação ou Composição depende do domínio que você está estudando/modelando.
[ ] 's
Vini_Fernandes
Bom, conversei um pouco com uma amigo e ele me disse que soa dois conceitos há muito tempo utilizado por analistas quando estao modelando um sistema. Na verdade Composicao e Agregacao sao dois tipos distintos de uma Associacao. Encontrei um material que pode nos ajudar:
Agregação ou Composição depende do domínio que você está estudando/modelando.
[ ] 's
É verdade. Mas qual seria a situação onde Computador --> Memória poderia ser classificado de outra forma que não fosse agregação?
fantomas
Minha opinião…
Acredito que o Vini Fernandes está apontando para a direção correta.
No modelo estatico, em dado momento da analise tudo entre as entidades não passa de associações; a medida que o estudo começa a evoluir o desenvolvedor adiciona mais detalhes semanticos a estas associações, no caso associação por agregação ou por composição (simplificado fica apenas agregação ou composição).
Na associação por agregação os agregados deixam de existir quando a entidade que os agrega deixa de existir no caso da composição quando a entidade que os compõe deixa de existir eles continua existindo.
O problema dos exemplos é que isso tudo é apenas conceitos que abstrai aspectos da realidade se vc se apoiar 110% no mundo “real” muitas vezes a coisa pode ficar confusa.
flws
igorCouto
Se a memória não tem identidade e existe apenas para descrever este computador. Quando o computador é excluído, ela vai junto.
luistiagos
depende qual memoria… se for processador -> registradores a existencia dos registradores não fazem sentido sem o processador… então seria uma composição…
tnaires
O exemplo por acaso está ambíguo? Processador, registradores? Estamos falando de computador e memória RAM. Além disso, um registrador continua existindo pois pode ser reutilizado em outro computador. Não é composição.
fantomas
Desculpem a vacilada inverti as idéias, no meu ultimo post sobre o assunto: :oops:
Corrigindo…
Na associação por agregação os agregados continuam existindo quando a entidade que os agrega deixa de existir no caso da composição quando a entidade que compõe deixa de existir os componentes que compõe deixam de existir tambem.
flws
tnaires
fantomas:
Desculpem a vacilada inverti as idéias, no meu ultimo post sobre o assunto: :oops:
Corrigindo…
Na associação por agregação os agregados continuam existindo quando a entidade que os agrega deixa de existir no caso da composição quando a entidade que compõe deixa de existir os componentes que compõe deixam de existir tambem.
flws
Exato.
Agregação -> as partes existem sem o todo.
Composição -> as partes não existem sem o todo.
M
mayracarmeli
No caso de termos classes como: Funcionario, Departamento e Empresa, o q seria correto, composição ou agregação?
A professora disse q era agregação, mas vcs disseram aqui que na agregação a parte existe sem o todo, e pra mim um Departamento não existe se não estiver em uma empresa!
Ou estou entendendo errado?
Agradeço se puderem me esclarescer!
(Y)
xdraculax
O funcionário existe caso saia da Empresa? Sim
Departamento existe fora da empresa? Não
Empresa tá no topo…
Cri uma modelagem assim:
Empresa possui uma lista de Departamentos. Não sei se você está falando de modelagem de banco, mas se for.
Coloque uma tabela para representar o relacionamento entre Funcionário --> Departamento
NO banco: Empresa 1 >> n Departamento | Funcionário 1 >> n FuncionarioDepartamento n >> 1 Departamento
Nas classes: Empresa possui uma lista de Departamento, um Departamento possui uma lista de Funcionários
No caso de termos classes como: Funcionario, Departamento e Empresa, o q seria correto, composição ou agregação?
A professora disse q era agregação, mas vcs disseram aqui que na agregação a parte existe sem o todo, e pra mim um Departamento não existe se não estiver em uma empresa!
Ou estou entendendo errado?
Agradeço se puderem me esclarescer!
(Y)
Voce e todo mundo entende isso errado. E o motivo é a primeira regra OO: não tentar modelar objetos do mundo real.
sergiotaborda
tnaires:
André Fonseca:
Oi Tarso
Pra mim isso se trata de uma Agregação, já que tirando uma memória do computador ela continua existindo e pode ser colocada em outro computador…
Pelo menos acho que essa seria a opinião que andei vendo por ai…
Eu juraria de pé junto que seria composição, mas depois da aula conversei com o professor e percebi que eu estava errado.
Eu pensava que composição ocorria quando o todo não poderia existir sem suas partes. No exemplo, não faz sentido a existência de um computador sem a sua memória - ele não funciona.
Composição ocorre quando o todo existe quando é formado pelas partes. Numa implementação, o todo é forçado e ter os componentes. É muito claro quando vc precisa de passar B para A no construtor de A , isso é uma composição.
O exemplo claro são os conjuntos de animais : uma manada é composta de bois. Os bois existe per se, a manada só existe quando eles são compostos.
Este ideia de Composição/componente é um pouco diferente do componentes (vulgo) que usamos em frases como “o computador é formado pelos seus componentes”. A frase que vc citou é comumente utilizada para explicar composição,mas é fraca para distinguir alguns casos como este.
Um computador sem memória não existe ( não importa se funciona). Porque um computador é, por definição, definido como algo que tem memória. Se não tem memoria, não é mais um computador. O que quero dizer é que o vinculo é logico, não fisico.
Não. Vc estava certo para começo de conversa. A nota existe quando é formada pelos itens. Sem itens não ha nota. Ou seja, a nota são os itens (a manada são os bois). Da mesma forma o computador são o processador e a memoria. O que não é o computador é chamado de periférico (um computador funciona sem monitor e até sem placa gráfica, mas não sem CPU e memoria (repare que CPU e memoria são até abstrações em si mesmas )
A nota existe quando é formada por itens. Os itens existem por si mesmos, independentemente de como são “compostos” já que eles são abstrações de um evento real :a venda/compra de um produto.
Conforme você mencionou - e conforme seus links apontam - na agregação o todo pode existir sem a parte. Logo, no caso do Computador --> Memória, a resposta certa é agregação.
Eu discordo. Um monte de peças não forma um computador. Um computador existe quando as peças certas estão presentes (funcionando ou não).
Outro exemplo : As pessoas têm membros ou são formadas por membros ? Elas têm membros. Elas não deixam de existir se membros forem amputados. E corpo humano , têm membros ou é formado por membros ? Ele é formado por membros. É por isso que se chama “membro” (!). Repare, parece a mesma coisa, mas não é. Existe a associação (errada, mas proposital no exemplo)
de que uma pessoa é o mesmo que corpo humano. Não é. Na realidade uma pessoa tem um corpo (associação) e um corpo é composto de membros (composição). Porque existe uma relação 1-1 Pessoa-Corpo é fácil confundir ( é por isso que ficção cientifica não é entendida por todos ela joga muito com essas diferenças subliminares)
Claro, alguem pode dizer estou usando a definição “pura” de corpo humano e que arrancar um braço não faz o corpo deixar de existir, contudo, existe uma outra forma de entender a composição.
A é composto por B quando 1 objeto de B só pode pertence a um 1 objeto de A num dado momento. Ou seja, não podem ser partilhado. Itens de nota, memorias e membros não podem ser partilhados. É por isso que é uma composição. Não ha itens pertencendo a duas notas simultaneamente.
Pode existir um contexto em que isto seja possivel (membros de corpos roboticos, irmãos siameses) e assim, como alguem disse, a diferença é sutil e muda conforme o contexto.
No fim depende da ppr definição de computador no contexto da pergunta. E esse contexto é deixado em aberto,e exatamente para gerar polémica (porque é esse o objetivo do professor). num caso real não existe essa duvida, pois se existe ela é sanada imediatamente.
rodrigoy
Vamos aos exemplos clássicos.
Agregacão: Simplesmente é um relacionamento do tipo "Parte-Todo" e isso não vai mudar praticamente nada no seu código. Agregação simplesmente é uma informação do projeto [ Rumbaught]. Na dúvida, não use. É isso mesmo que estou falando. Se for gerar confusão no seu projeto não use, pois Agregação não tem semântica na UML.
Exemplo Clássico:
Explicação: Simplesmente uma Equipe é o Todo e as Pessoas são as Partes. Nada muda se você simplesmente tirar aquele diamante dali.
Composição: é o relacionamento mais forte da UML. A idéia da Composição é que o conjunto todo de classes é como se fosse uma única coisa. Uma instância das partes não pode ser compartilhada e quando a classe forte (da do diamante) morre todos os compostos morrem junto.
Exemplo Clássico:
Um item pedido não pode estar associado a dois pedidos simultaneamente. Quanto o pedido morre os itens também morrem.
Antes, uma das coisas que causam confusão é onde se toma a referência, seja a PARTE ou o TODO.
Tudo bem que a PARTE que não faz sentido sem o TODO seja uma composição, mas e o contrário?
Quando um TODO perde sentido sem a PARTE, que tipo associação temos?
O caso que postei se trata de ERRATAS de LIVROS.
A ERRATA pode ou não existir no LIVRO, se pensarmos no TODO (LIVRO) este não depende/não é necessariamente composto pela PARTE (ERRATA).
Mas uma vez que esta ERRATA (PARTE) exista, ela passa a compor o TODO (LIVRO).
Sob a perspectiva do TODO, a errata é agregada, onde necessáriamente não faz parte do LIVRO (que pode existir sem ERRATA).
Sob a perspectiva da PARTE, a ERRATA tem uma relação de composição com o LIVRO, já que ela sozinha não tem sentido.
Tomamos a consideração o TODO ou a PARTE na associação?
Como vocês modelariam este caso?
Valeu!
Abs
F
fabioEM
Então de acordo com mo que foi dito;
homem --> pernas
é uma agregação de fato um homem pode viver sem pernas?è isso mesmo?
paulofafism
Vamos aos exemplos clássicos.
Agregacão: Simplesmente é um relacionamento do tipo “Parte-Todo” e isso não vai mudar praticamente nada no seu código. Agregação simplesmente é uma informação do projeto [ Rumbaught]. Na dúvida, não use. É isso mesmo que estou falando. Se for gerar confusão no seu projeto não use, pois Agregação não tem semântica na UML.
Exemplo Clássico:
Explicação: Simplesmente uma Equipe é o Todo e as Pessoas são as Partes. Nada muda se você simplesmente tirar aquele diamante dali.
Composição: é o relacionamento mais forte da UML. A idéia da Composição é que o conjunto todo de classes é como se fosse uma única coisa. Uma instância das partes não pode ser compartilhada e quando a classe forte (da do diamante) morre todos os compostos morrem junto.
Exemplo Clássico:
Um item pedido não pode estar associado a dois pedidos simultaneamente. Quanto o pedido morre os itens também morrem.
Do ponto de vista do TODO (Homem) está certo dizer que é uma agregação, já que ele pode existir sem a PARTE (perna).
Mas do ponto de vista da PARTE (perna) é uma composição, já que uma perna sozinha não tem sentido de ser e nem ser aplicada a outro homem.
Por isso volto a perguntar qual a referência ideal que devemos ter na modelagem, a PARTE ou o TODO?
Ok Diego, e no caso que postei sobre LIVRO e ERRATA?
Um livro pode existir sem errata mas, se houver errata e o livro for excluído, as erratas vão junto.
Se o livro pode existir sem errata = agregação (essa é a perspectiva do TODO)
Se a errata é excluída junto com o livro = composição (essa é a perspectiva da PARTE)
Erratas de livros caem em qual caso?
Diego_Marinho
Cara neste caso, vai depender da regra de negócio aplicado a sua necessidade.
O exemplo que dei é um exemplo genérico e ponderável.
De maneira geral (pensando de maneira macro), um livro pode sim, existir sem errata. Agora uma errata não pode existir sem um livro(Agregação), entende.
Agora dependendo da regra de negócio aplicado ao “seu negócio”, vai depender. Tem que ter o “feeling” para perceber isso. Mas vc está indo bem, apenas pense nesta forma e adque a sua solução.
A UML não visa complicar e sim deixar o mais simples possível, como linguagem universal de “expressão” em soluções para expressar uma solução de software, objeto e seu desenho mental.
Qualquer dúvida sugiro ler o livro mais famoso, escrito pelos “pais” da UML. Com o nome de:
Guia do Usuário - Grady Booch; Ivar Jacobson; James Rumbaugh.
[]'s.
pgnt
Valeu Diego.
Se a referência é relativa, eu modelaria a relação errata - livro como dependência por conta dos registros de erratas serem apagadas junto com o livro, apesar disso não ser verdade sob a perspectiva do todo.
Acho que é um caso mais para a Filosofia do que pra TI rs
abs
sergiotaborda
pgnt:
Ok Diego, e no caso que postei sobre LIVRO e ERRATA?
Um livro pode existir sem errata mas, se houver errata e o livro for excluído, as erratas vão junto.
Se o livro pode existir sem errata = agregação (essa é a perspectiva do TODO)
Se a errata é excluída junto com o livro = composição (essa é a perspectiva da PARTE)
Erratas de livros caem em qual caso?
Existem 3 principais tipos de relação em OO. E nenhum deles têm relação com integridade referencial. OO não é banco de dados.
Quando vc pergunta “se houver errata e o livro for excluído, as erratas vão junto” isso não faz sentido em OO.
A relações possiveis : Associação , Agregação e Composição.
Associação é o simples Tem-Um. Em UML é a linha sem losangulos.
Agregação é uma associação em que não ha referencia recursiva. Ou seja, Se A contém B, B não contém A, nem mesmo através de C.
Composição é uma agregação em que o ciclo de vida dos filhos é controlada pelo pai.
Uma errata não pode viver sem o livro, e o livro tem erratas. Erratas são de livros, ou seja, duas erratas relativas ao mesmo texto podem acontecer em livros diferentes. Portanto Um livro tem várias erratas associadas e um errata tem um livro associado. Porque a errata tem referencia ao livro, não é uma agregação nem uma composição.
quando o livro é removido, a sua associação à erratas desaparece. Porque o livro foi removido, a errata não se relaciona a ninguem, logo ela é inconsistente e é removida tb. A integridade referencial não depende apenas do tipo de associação.
Em linguagem moderna , Livro é um Agregado. Neste sentido, Errata está contida dentro de livro. Remover o livro remove todo o que está “dentro” dele, é como ao remover o livro, o nome dele é removido.
D
denisemviana
[b]Aproveitando este Fórum, eu sou novata no mundo Java E gostaria da ajuda de vocês. Tenho um sistema que possui a classe professor, aluno e curso. Sendo que na hora de cadastrar o curso, eu preciso mostrar a lista de professores existes e dá uma opção ao adm de escolher o professor que vai lecionar esse curso, a mesma coisa terei que fazer para o aluno, depois preciso imprimir o curso com seu respectivo professor e alunos. :? :? :?
Me disseram pra trabalhar com composição, como fazer isso ??? :? :? :? :?: :?: :?:
Obrigada. [/b]
D
denisemviana
Segue meu código
Classe Curso
importjava.util.List;publicclassCurso{protectedintcodCurso;protectedStringnCurso;protectedProfessorprofessor;protectedList<Aluno>alunos;// Get e Set codCurso========================publicintgetCodCurso(){returncodCurso;}publicvoidsetCodCurso(intcodCurso){this.codCurso=codCurso;}// Get e Set codCurso========================publicStringgetNCurso(){returnnCurso;}publicvoidsetNCurso(StringnomeCurso){nCurso=nomeCurso;}// Get e Set ProfessorpublicCursogetProfessor(){returnthis.getProfessor();}publicvoidsetProfessor(Professorprofessor){this.professor=professor;}// Get e set List AlunopublicList<Aluno>getAlunos(){returnalunos;}publicvoidsetAlunos(List<Aluno>alunos){this.alunos=alunos;}}
Classe Aluno
importjava.util.*;publicclassAluno{Scannerscanner=newScanner(System.in);protectedintmatAluno;protectedStringnAluno;protectedStringlogin;protectedStringsenha;// Get e Set mtAluno ====================================publicintgetMatAluno(){returnmatAluno;}publicvoidsetMatAluno(intmtAluno){this.matAluno=mtAluno;}// Get e Set nAluno =====================================publicStringgetNAluno(){returnnAluno;}publicvoidsetNAluno(Stringaluno){nAluno=aluno;}// Get e Set login ======================================publicStringgetLogin(){returnlogin;}publicvoidsetLogin(Stringlogin){this.login=login;}// Get e Set senha ======================================publicStringgetSenha(){returnsenha;}publicvoidsetSenha(Stringsenha){this.senha=senha;}// Cadastro do Aluno ===================================publicvoidcadastraAluno(){System.out.println("Matricula: ");this.setMatAluno(scanner.nextInt());System.out.println("Nome: ");this.setNAluno(scanner.next());System.out.println("Login: ");this.setLogin(scanner.next());System.out.println("Senha: ");this.setSenha(scanner.next());}//Mostra os cadastros dos alunos ===========================publicvoidexibeAluno(){System.out.println("Matricula: "+getMatAluno());System.out.println("Nome: "+getNAluno());System.out.println("Login: "+getLogin());System.out.println("Senha: "+getSenha());}}
Classe Professor
importjava.util.Scanner;publicclassProfessor{Scannerscanner=newScanner(System.in);protectedintmatProf;protectedStringnProf;protectedStringlogin;protectedStringsenha;// Get e Set mtProf ====================================publicintgetMatProf(){returnmatProf;}publicvoidsetMatProf(intmtProf){this.matProf=mtProf;}// Get e Set nProf ====================================publicStringgetNProf(){returnnProf;}publicvoidsetNProf(Stringprof){this.nProf=prof;}// Get e Set login ====================================publicStringgetLogin(){returnlogin;}publicvoidsetLogin(Stringlogin){this.login=login;}// Get e Set senha ====================================publicStringgetSenha(){returnsenha;}publicvoidsetSenha(Stringsenha){this.senha=senha;}}
importjava.util.*;publicclassPrincipal{Administradoradministrador=newAdministrador();List<Aluno>alunos=newArrayList<Aluno>();List<Professor>professores=newArrayList<Professor>();List<Curso>cursos=newArrayList<Curso>();inti=0;publicvoidlogar(intopcao){Scannerscanner=newScanner(System.in);Stringlogin;Stringsenha;System.out.println("Digite seu login e senha!*\n");System.out.println("Login: ");login=scanner.next();System.out.println("Senha: ");senha=scanner.next();switch(opcao){// == Caso 01 - Se o usuário se identificar como Administrador ==// ********************case1:intopAdm=0;if(administrador.getLogin().equals(login)&&administrador.getSenha().equals(senha)){System.out.println("Autenticação com Sucesso!");// logar como administradordo{System.out.println("Sistema Acadêmico\n");System.out.println("* Usuário Administrador *\n");System.out.println("1- Cadastrar Curso");System.out.println("2- Cadastrar Professor(a)");System.out.println("3- Cadastrar Aluno");System.out.println("4- Relatório Professores");System.out.println("5- Relatório Alunos");System.out.println("6- Relatório Curso");System.out.println("7- Sair");opAdm=scanner.nextInt();switch(opAdm){case1:// ============= Cadastro do Curso ================Cursocurso=newCurso();System.out.println("*** Cadastro Curso ***\n\n");System.out.println("Digite o Código: ");curso.setCodCurso(scanner.nextInt());System.out.println("Digite o nome: ");curso.setNCurso(scanner.next());// ******AQUI TÁ O PROBLEMASystem.out.println("Escolha o Professor do Curso: ");for(Professorprof:professores){System.out.println(i+""+cursos.get(i).getProfessor());}intopCurso=scanner.nextInt();for(Professorprof:professores){if(i==opCurso){CursoguardaOp=cursos.get(i).getProfessor();}}cursos.add(curso);break;case2:// =========== Cadastro do Professor ==============Professorprof=newProfessor();System.out.println("*** Cadastro Professor ***\n\n");System.out.println("Digite a Matricula: ");prof.setMatProf(scanner.nextInt());System.out.println("Digite o nome: ");prof.setNProf(scanner.next());System.out.println("Digite o Login: ");prof.setLogin(scanner.next());System.out.println("Digite a Senha: ");prof.setSenha(scanner.next());professores.add(prof);break;case3:// ============== Cadastro do Aluno ==================Alunoaluno=newAluno();System.out.println("*** Cadastro Aluno ***\n\n");System.out.println("Digite a Matricula: ");aluno.setMatAluno(scanner.nextInt());System.out.println("Digite o nome: ");aluno.setNAluno(scanner.next());System.out.println("Digite o Login: ");aluno.setLogin(scanner.next());System.out.println("Digite a Senha: ");aluno.setSenha(scanner.next());alunos.add(aluno);break;case4:// ====== Relatórios Professores ==========System.out.println("Sistema Acadêmico\n");System.out.println("* Lista Professores *\n");for(i=0;i<professores.size();i++){System.out.println("Matricula: "+professores.get(i).getMatProf());System.out.println("Professor(a): "+professores.get(i).getNProf());System.out.println("Login: "+professores.get(i).getLogin());System.out.println("Senha: "+professores.get(i).getSenha()+"\n");}break;case5:// ============= Relatórios Alunos ================System.out.println("Sistema Acadêmico\n");System.out.println("* Listas Alunos *\n");for(i=0;i<alunos.size();i++){System.out.println("Matricula: "+alunos.get(i).getMatAluno());System.out.println("Aluno: "+alunos.get(i).getNAluno());System.out.println("Login: "+alunos.get(i).getLogin());System.out.println("Senha: "+alunos.get(i).getSenha()+"\n");}break;case6:// ============ Relatórios Cursos ================System.out.println("Sistema Acadêmico\n * Listas Cursos *\n");System.out.println("Digite o Código do Curso de sua preferência: ");for(Cursoc:cursos){System.out.println(cursos.get(i).getCodCurso());System.out.println(cursos.get(i).getNCurso());//System.out.println(cursos.get(i).getAlunos());}// ******AQUI TÁ O PROBLEMAintopCodCurso=scanner.nextInt();for(Cursoc:cursos){if(opCodCurso==i){System.out.println(cursos.get(i).getCodCurso());s}}//}//}break;default:System.out.println("Opção Inválida!");break;}}while(opAdm!=7);}else{System.out.println("Erro de Autenticação!");}break;// ========= Caso 02 - Se o usuário se identificar como Professor ================// ********************case2:for(Professorprof:professores){if(prof.getLogin().equals(login)&&(prof.getSenha().equals(senha))){// if (((Professor) professores).getLogin().equals(login) &&// ((Professor) professores).getSenha().equals(senha)) {System.out.println("Autenticação com Sucesso!");System.out.println("Sistema Acadêmico\n");System.out.println("* Usuário Professor *\n");System.out.println("1- Exibe\n 2-Sair");intopProf=scanner.nextInt();do{switch(opProf){case1:// ====== Apenas exibe uma mensagem =========System.out.println("Não tem !!! xD\n");break;default:System.out.println("Opção Inválida!");break;}System.out.println("Sistema Acadêmico\n");System.out.println("* Usuário Professor *\n");System.out.println("1- Exibe\n 2-Sair");opProf=scanner.nextInt();}while(opProf!=2);}else{System.out.println("Erro de Autenticação!");}}break;// ====== Caso 03 - Se o usuário se identificar como Aluno ========// ********************case3:for(Alunoaluno:alunos){if(aluno.getLogin().equals(login)&&(aluno.getSenha().equals(senha))){System.out.println("Autenticação com Sucesso!");System.out.println("Sistema Acadêmico\n");System.out.println("* Usuário Aluno *\n");System.out.println("1- Exibe\n 2-Sair");intopAluno=scanner.nextInt();do{switch(opAluno){case1:// ====== Apenas exibe uma mensagem ======System.out.println("Não tem !!! xD\n");break;default:System.out.println("Opção Inválida!");break;}System.out.println("Sistema Acadêmico\n");System.out.println("* Usuário Aluno *\n");System.out.println("1- Exibe\n 2-Sair");opAluno=scanner.nextInt();}while(opAluno!=2);}else{System.out.println("Erro de Autenticação!");}}break;// =================== Opção Inválida =================// ********************default:System.out.println("Opção Inválida!");break;}}// ========== PROGRAMA PRINCIPAL (INICIO) ============publicstaticvoidmain(String[]args){Principalprincipal=newPrincipal();principal.administrador.setLogin("administrador");principal.administrador.setSenha("senha");Scannerscanner=newScanner(System.in);intopcao=0;System.out.println("Sistema Acadêmico\n\nSelecione a opção:");System.out.println("1-Administrador \n2-Professor(a) \n3-Aluno \n4-Sair");opcao=scanner.nextInt();while(opcao!=4){principal.logar(opcao);System.out.println("Sistema Acadêmico\n\nSelecione a opção:");System.out.println("1-Administrador \n2-Professor(a) \n3-Aluno \n4-Sair");opcao=scanner.nextInt();}}}// =========== PROGRAMA PRINCIPAL (FIM) =============
boaglio
denisemviana:
Me disseram pra trabalhar com composição, como fazer isso ??? :? :? :? :?: :?: :?:
Para trabalhar com [google]composição[/google] precisa entender o conceito.
Olá Denise,
Eu sou um pouco fraco com conceitos de OO, porque ainda estou estudando eles, mas composição pelo que eu sei é mais ou menos o seguinte. Você tem a Arvores e Passaros e os dos, e se somente os dois existirem você tera uma floresta por exemplo.
Melhorando o que eu falei acima. Se você uma classe aluno e uma classe professor você pode montar a classe turma se e se somente se as duas classes existirem, tipo:
Aluno aluno1 = new Aluno(“nome”, “serie”, nota1, nota2, turmaA);
Professor professor1 = new Professor (“nome”, “materiaLeciona”, turmaA)
Turma turmaA = new Turma(aluno1, professor1);
Esses objetos iriam compor a classe Turma… Entendeu? Se você não tiver um professor, como vai ter uma turma? Compreende?
Essa é a idéia de composição que eu sei e entendi =)
Espero ter ajudado ou pelo menos estimulado alguém me corrigir =) Qualquer coisa é só postar ai =) vlw t+
D
denisemviana
Obrigada Augusto Cesar
Mas o que realmente estou precisando é ajuda no código !!! Quem pode me ajudar ???
Augusto_Cesar
Você pode fazer um for dentro do case(*) que você quer listar esse professor, Vamos supor que você queira listar os professores na hora de gerar a turma e quer escolher o professo para essa turma, você pode fazer um FOR ou um WHILE que vai varrer a lista de professores mostrando eles na tela tipo
e segue a mesma idéia que você uso nos cases para listar ele no final das contas
D
denisemviana
Sei que é pedir demais, mas Augusto Cesar vc poderia ver meu código e me dizer onde preciso modificar ???
Sério, sou novataaaaaa, e preciso de ajuda.
:?: :?: :? :? :? :?: :?: :?: :?: :? :? :? :? :?: :?: :?: :?: :? :? :? :? : :?: :?: :?: :?: :?:
Augusto_Cesar
Eu tb sou novato no java e to tentando aprender mais sobre ele, mas vamos lá.
Dentro do local onde você printa os valores que serão cadastrados você vai colocar esse negocio do professor que eu tinha te falado, eu to enrolado com um codigo de jasper aqui to resolvendo uns pepinos aqui e to sem tempo de testar o codigo, mas tenta colocar no local onde você cadastra o curso o objeto que monta a lista de professores e varre ele usando um while e retornando os valores que estão dentro do objeto. se não conseguir vai postando as tentativas de mudança somente com a parte que você alterou que a comunidade vai ajudando =) vlw