É correto fazer isso?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
utroz
Debugger

Membro desde: 07/01/2011 12:26:39
Mensagens: 69
Offline

Gente gostaria de saber se é correto fazer o que eu fiz no código abaixo, ou se é melhor a aplicação de herança, obrigado!









dhsouza
HelloWorld
[Avatar]

Membro desde: 06/02/2011 13:13:09
Mensagens: 13
Localização: Cascavel
Offline

eu faria diferente, eu usaria apenas duas classes, uma pessoa e outra a principal. dentro dessa classe principal eu usaria para criar os objetos João e Maria, os objetos joao e maria possuem os mesmos metodos e atributos, logo não seria necessario criar uma classe para cada um deles. abraços



[MSN]
utroz
Debugger

Membro desde: 07/01/2011 12:26:39
Mensagens: 69
Offline

Pensando bem é melhor msm:



caio_ferreira
JavaTeenager
[Avatar]

Membro desde: 21/02/2008 09:25:40
Mensagens: 189
Localização: São Caetano do Sul - SP
Offline


Graduado em Ciência da Computação
Oracle Certified Java Programmer 5




[MSN]
tinorberto
JavaEvangelist
[Avatar]

Membro desde: 29/10/2008 15:54:46
Mensagens: 345
Localização: Viçosa - Minas Gerais
Offline

Fica bem melhor da segunda forma, imagina se vc fosse criar 30 pessoas, teria que fazer 30 classes iguais. flw

Bacharel - Ciência da Computação
Universidade Federal de Viçosa
OCJP 6
[Email] [MSN]
discorpio
Virtual Machine Man
[Avatar]
Membro desde: 06/02/2010 18:46:46
Mensagens: 562
Localização: Rio de Janeiro
Offline

Boa noite a todos.

Não deixa de ser correto, entretanto, não é aconselhável fazer isto, sabe porque

Quando fazemos a pergunta Maria e João são Pessoas, mas será que todas as Pessoas são Maria e João

Como assim, o que voce quer dizer

Quero dizer que nem todas as Pessoas podem ter os mesmo atributos, se quer ver um exemplo:

Supomos que Maria seja Advogada e João seja Enhenheiro. Para Maria voce tem que ter o atributo "registro na OAB" e João o registro no "CREA".

Voce vai sair definindo os diversos atributos de tipos de documentos (CREA numero, OAB numero) na classe Pessoa

Ah, mas eu posso definir um único atributo "Nome da Profissão" e outro "Orgão do Documento", tudo bem, isto voce pode, porém o exemplo que dei acima, é só um dos exemplos que podem ocorrer dentro do paradigma de Orientação a Objetos. Em uma situação mais complexa, haverá casos em que para uma determinada Pessoa voce tenha que definir um atributo que não pode ser definido para todas as Pessoas, somente e esclusivamente para esta Pessoa, eu no seu caso, a Classe Pessoa engessou todos os atributos para cada Pessoa.

Recomendo fazer a herança, podendo até definir a classe Pessoa como Classe Abstrata, ou Interface, ou uma simples herança mesmo.

O Senhor é meu Pastor e nada me faltará. (Sl. 23:01)
[MSN]
discorpio
Virtual Machine Man
[Avatar]
Membro desde: 06/02/2010 18:46:46
Mensagens: 562
Localização: Rio de Janeiro
Offline

Boa noite a todos.

Não deixa de ser correto, entretanto, não é aconselhável fazer isto, sabe porque

Quando fazemos a pergunta Maria e João são Pessoas, mas será que todas as Pessoas são Maria e João

Como assim, o que eu quero dizer

Quero dizer que nem todas as Pessoas podem ter os mesmo atributos, quer ver um exemplo:

Supomos que Maria seja Advogada e João seja Enhenheiro. Para Maria voce tem que ter o atributo "registro na OAB" e João o registro no "CREA".

Voce vai sair definindo os diversos atributos de tipos de documentos (CREA numero, OAB numero) na classe Pessoa

Ah, mas eu posso definir um único atributo "Nome da Profissão" e outro "Orgão do Documento", tudo bem, isto voce pode, porém o exemplo que dei acima, é só um dos exemplos que podem ocorrer dentro do paradigma de Orientação a Objetos. Em uma situação mais complexa, haverá casos em que para uma determinada Pessoa voce tenha que definir um atributo que não pode ser definido para todas as Pessoas, somente e esclusivamente para esta Pessoa, eu no seu caso, a Classe Pessoa engessou todos os atributos para cada Pessoa.

Recomendo fazer a herança, podendo até definir a classe Pessoa como Classe Abstrata, ou Interface, ou uma simples herança mesmo.

O Senhor é meu Pastor e nada me faltará. (Sl. 23:01)
[MSN]
raf4ever
JWizard

Membro desde: 30/01/2005 01:34:51
Mensagens: 2311
Localização: Fortaleza-Ce
Offline

Eu faria:






Rafael Roque
Quis custodiet ipsos custodes?
IBM Certified SOA Associate
ITIL Foundations Certified
SCEA(I)
SCWCD
SCJP
[Email] [MSN]
raf4ever
JWizard

Membro desde: 30/01/2005 01:34:51
Mensagens: 2311
Localização: Fortaleza-Ce
Offline

discorpio wrote:Supomos que Maria seja Advogada e João seja Enhenheiro. Para Maria voce tem que ter o atributo "registro na OAB" e João o registro no "CREA". .

Isso poderia ser implementado assim:


O que vc acha?

Rafael Roque
Quis custodiet ipsos custodes?
IBM Certified SOA Associate
ITIL Foundations Certified
SCEA(I)
SCWCD
SCJP
[Email] [MSN]
discorpio
Virtual Machine Man
[Avatar]
Membro desde: 06/02/2010 18:46:46
Mensagens: 562
Localização: Rio de Janeiro
Offline

raf4ever wrote:
discorpio wrote:Supomos que Maria seja Advogada e João seja Enhenheiro. Para Maria voce tem que ter o atributo "registro na OAB" e João o registro no "CREA". .

Isso poderia ser implementado assim:


O que vc acha?


Boa noite.

Sim, foi como disse antes, porém eu esqueci do primordial que é o comportamento que são definidos pelos métodos, vamos ao exemplo.

Supomos os seguintes comportamentos: "Dirigir", "Fazer compras", "Ler livros", "Assistir TV", "Jogar Futebol", "Limpar a casa", "Pilotar avião", "Pilotar trem" e etc.

Repare que nem todas as Pessoas vão ter todos estes comportamentos.

Vamos a um exemplo prático:





É claro que o exemplo acima foi bem simples, mas repare que há mudança de atributos de Homem pra Mulher e mudanças de comportamento de Pessoa para Pessoa. Isto em uma situação mais complexa ocorre com frequencia em Orientação a Objetos e este conceito é conhecido como "Polimorfismo".

Fazer do jeito que voce estava fazendo antes, estava quebrando a regra deste conceito.

This message was edited 2 times. Last update was at 27/02/2011 22:22:08


O Senhor é meu Pastor e nada me faltará. (Sl. 23:01)
[MSN]
raf4ever
JWizard

Membro desde: 30/01/2005 01:34:51
Mensagens: 2311
Localização: Fortaleza-Ce
Offline

Mas profissão não vai ser um comportamento de Pessoa,independente de qual implementação?

Rafael Roque
Quis custodiet ipsos custodes?
IBM Certified SOA Associate
ITIL Foundations Certified
SCEA(I)
SCWCD
SCJP
[Email] [MSN]
discorpio
Virtual Machine Man
[Avatar]
Membro desde: 06/02/2010 18:46:46
Mensagens: 562
Localização: Rio de Janeiro
Offline

raf4ever wrote:Mas profissão não vai ser um comportamento de Pessoa,independente de qual implementação?


Bom dia Raf4ever.

Eu usei o comportamento de Pessoas apenas para ilustrar como ocorre com os objetos virtuais na Orientação a Objetos.

É claro, como disse antes, o procedimento que o nosso colega adotou anteriormente, não está errado, em se tratando no caso de Pessoas, até porque nós não costumamos criar classes para cadastrar Pessoas, Funcionários e etc. pois eles são feitos atraves do banco de dados, as classes são apenas criadas, no caso de pessoas, como entidade de dados que vão trafegar esses dados referentes a identificação da Pessoa, e dentro desses dados não se inclui o comportamento delas.

O comportamento a que me referia, era o comportamento do Objeto e se voce pensar em criar uma classe Pessoa, então voce está olhando nesta Pessoa como um Objeto Virtual no seu computador e isso envolve a Orientação a Objetos. E era exatamente o que estava querendo explicar são os conceitos da Orientação a Objetos: Classes, herança, Polimorfismo e etc. pois da maneira que estava sendo feito, quebra as regras do Polimorfismo, onde um objeto possui estado que são seus atributos e possui comportamento que são seus métodos, e estes jamais poderão ficar engessados em apenas uma classe.

This message was edited 1 time. Last update was at 28/02/2011 11:22:18


O Senhor é meu Pastor e nada me faltará. (Sl. 23:01)
[MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team