CARACTERÍSTICASDOOBJETO1-mouse:comousemscroll,pretooubranco;2-teclado:dediversascores;3-cpu:gabinetetipotorreounão;4-estabilizador:dediversasvoltagens;5-monitor:lcd,15" ou 17".
Acho que depende do quão detalhista você quer ser…
Dá pra incrementar mais isso ai né, mas nào sei se é esse o objetivo ehehehe
Mas e os métodos para manipular essas caracteristicas dentro das classes, cadê?
paloma
No caso desse exercício o objetivo é entender quais são os princípios de orientação a objetos :lol:
paloma
Mas a princípio meu raciocínio está correto?
TiagoFoil
Olha depende do q o seu professor quer dizer com “princípios de orientação a objetos”. Pois essa definição sua nao descreve o computador como uma classe, vc apenas descreveu os objetos q compoem um computador. E, em momento algum, vc descreveu funcionalidades desses objetos. Tipo, Classe Monitor possuir o método obterTipo(). Acho q de alguma forma vc deveria falar de classes e métodos.
Mantu
Uma classe é caracterizada por um conjundo de estados(ou propriedades, ou campos, ou atributos, etc…) e comportamentos(ou funções, ou métodos, etc…).
Acho que o que vc escreveu, Paloma, tá quase lá… Vc meio que descreveu os objetos por valores de propriedades ou invés de pelas propriedades própriamente ditas.
Acho que ficaria melhor assim:
O que vc quer dizer com valores de propriedades ao invés de propriedades propriamente ditas?
Mantu
Por exemplo, no caso co mouse: Ao invés de vc dizer que um mouse tem uma propriedade chamada “cor”, vc disse que ele pode ser preto ou branco, ou seja, vc disse que o mouse pode ter para a propriedade cor os valores preto ou branco.
Perceba que preto, azul, cinza, branco, roxo, tec. não são propriedades de alguma coisa, e sim o valor de uma propriedade chamada cor.
Pense na relação entre uma Classe e suas propriedades como uma relação do tipo TEM-UM. Um objeto Mouse não tem um “branco”, ou um “preto”, mas um Mouse TEM-UM atributo “cor”, o qual pode ser azul, verde, vermelho, branco, preto, cinza, etc…
TiagoFoil
Acho q o q o Mantu postou resolve o seu problema Paloma.
Vc poderia fazer do jeito q ele ta fazendo ali, colocando Nome da Classe, Propriedades e Métodos. Os nomes de algumas classes e suas respectivas propriedades vc já matou. Agora só acrescenta métodos como ele disse e acho q vai ficar bom.
paloma
Então a cor branca por exemplo, seria um atributo da propriedade cor, do mouse?
Mantu
Branco seria um valor do atributo cor
ou:
Branco seria um valor da propriedade cor
ou então:
Branco seria um valor do campo cor
ou ainda:
Branco seria um valor da variável de instância cor
.
Perceba que atributo, propriedade, campo e variável de instância são, no âmbito de programação OO, sinônimos. Todos eles se referem aos estados de uma classe; se referem ao que uma Classe TEM; ou ainda, a tudo que compõe uma classe.
Espero naum ter complicado mais ainda a questão… :lol:
Mas qq coisa, poste de novo, ok!
TiagoFoil
Não nao! “branca” é um valor.
Quando vc diz “branca” vc está se referinco a Propriedade (ou Atributo) Cor.
Exemplo, vc nao descreve uma classe (mais tarde objeto) falando assim, Classe: Mouse
Atributos ou Propriedades: Branco, Azul, preto, Com Scroll e sem Scroll.
O certo seria:
Classe: Mouse
Atributos: Cor, Tipo, etc.
Funcionalidades (métodos): obterTipo, obterCor, obterClick, etc.
A meu ver seria assim, passei com segunda melhor nota em LPII na facul assim ehehehe!!
Espero ter esclarecido ao inves de complicado ^^
paloma
Vamos ver se eu entendi :roll:
1 - OBJETO: mouse
1.1 - ATRIBUTOS DO OBJETO MOUSE: tipo, cor, tamanho,configuração
1.2 - MÉTODOS DO OBJETO: click_botão
2 - OBJETO: teclado
2.1 - ATRIBUTOS DO OBJETO TECLADO: configuração, tamanho,cor,tipo
2.2 - MÉTODOS DO OBJETO: teclar
3 - OBJETO: cpu
3.1 - ATRIBUTOS DO OBJETO CPU: configuração, tamanho, cor, tipo
3.2 - MÉTODOS DO OBJETO: processar_dados
Aqui uma dúvida com esse método (acho que seja), no caso de processar eu estaria falando de algum componente da cpu e não dela, isto é correto?
4 - OBJETO: estabilizador
4.1 - ATRIBUTOS DO OBJETO ESTABILIZADOR: voltagem, cor, tamanho
4.2 - MÉTODOS DO OBJETO: ligar, desligar
5 - OBJETO: monitor
5.1 - ATRIBUTOS DO OBJETO MONITOR: cor, tamanho, tipo, resolução
5.2 - MÉTODOS DO OBJETO: exibir_dados
Espero não ter escrito muita besteira
Mantu
É bem por aí agora, paloma!!!
Quanto ao lance da CPU, não sei se entendi bem a sua questão, mas vamos ver:
Um objeto pode muito bem ter um método que realize alguma operação sem envolver nenhum de seus campos, assim como pode ter um método que, para realizar seja-lá-o-que-ele-tem-que-realizar, ele tenha que utilizar os valores armazenados em seus campos. E mesmo nesse último caso, vc estaria falando da CPU, pois é atravéz dela que vc manda ela, ou um de seus componentes, fazer alguma coisa…
Vixi… acho que se eu achei a sua pergunta meio confusa, minha resposta foi pior ainda… :lol:
Mas não desiste, pergunte de novo se precisar! :thumbup:
paloma
Deixa eu ver se consigo, fazer de uma forma mais clara.
Tenho o objeto CPU, no caso eu falei de um método processar, que no caso quem executa esse método, são determinados componentes da cpu e não ela, entendeu? :lol: Daí estou na dúvida se esse método está correto
TiagoFoil
paloma:
Vamos ver se eu entendi :roll:
1 - OBJETO: mouse
1.1 - ATRIBUTOS DO OBJETO MOUSE: tipo, cor, tamanho,configuração
1.2 - MÉTODOS DO OBJETO: click_botão
2 - OBJETO: teclado
2.1 - ATRIBUTOS DO OBJETO TECLADO: configuração, tamanho,cor,tipo
2.2 - MÉTODOS DO OBJETO: teclar
3 - OBJETO: cpu
3.1 - ATRIBUTOS DO OBJETO CPU: configuração, tamanho, cor, tipo
3.2 - MÉTODOS DO OBJETO: processar_dados
Aqui uma dúvida com esse método (acho que seja), no caso de processar eu estaria falando de algum componente da cpu e não dela, isto é correto?
4 - OBJETO: estabilizador
4.1 - ATRIBUTOS DO OBJETO ESTABILIZADOR: voltagem, cor, tamanho
4.2 - MÉTODOS DO OBJETO: ligar, desligar
5 - OBJETO: monitor
5.1 - ATRIBUTOS DO OBJETO MONITOR: cor, tamanho, tipo, resolução
5.2 - MÉTODOS DO OBJETO: exibir_dados
Espero não ter escrito muita besteira
No caso da CPU (entendo por Gabinete) ela seria uma classe composta por outras classes(Hard Disk, Floppy Disk, CD-Rom, etc). Não se atenha tanto ao q elas fazem internamente, se preocupe mais em como elas se comunicam, ou seja, tente generalizar ao máximo.
Maior pecado vc ta cometendo no Estabilizador, quem precisa saber do seu tamanho? E no caso de seus métodos, ao invés de ligar e desligar vc poderia ter um métod mudarEstado(); que, dependendo do q vc “mandar” pra ele (true ou false) ele pode ligar ou desligar. No caso dos métodos em geral é sempre bom ter métodos q mudam propriedades e retornam seu valor. Exemplo: propriedade resolução do monitor poderia ter os dois métodos obterResolução e mudarResoluçao.
Tô ajudando? heheeh
Espero q sim! ^.^
paloma
Então no caso o método processar, não seria da cpu e sim de certos componentes que fazem parte da mesma, componentes estes que também poderiam ser objetos, é isso? Se este meu raciocínio está correto, então qual seria o método da cpu?
Mantu
No meu entender está. Digo isso, porque quando mandamos o drive de CD-RW gravar um cd, não fazemos isso diretamente (O drive de CD-RW não disponibiliza, por exemplo, um botãozinho que vc aperta com seu dedo e ele começa a gravação), e sim mandamos o comando pra CPU, que por sua vez processa a mensagem e delega a gravação para o drive.
Isso é muito comum em OO. As classes geralmente delegam algumas tarefas para os seus atributos.
Quando vc pegar prática nesse tipo de programação, vc vai ver que isso fará parte do seu dia-a-dia
TiagoFoil
Seu raciocínio está correto, só q nao aconselho vc chamar o Gabinete de CPU, pois CPU (Central Processing Unit, ou Unidade Central de Processamento) é o processador propriamente dito e gabinete é essa caixa q contém o processador, hd e depois componentes.
Sendo assim, Gabinete seria apenas um conjundo de outras classes e eu nao colocaria método nenhum nele, talvez um método pra ligar e desligar (mudarEstado). Olha como eu faria a “descrição OO” de um Gabinete:
Classe: Gabinete
Atributos: HardDisk, Processador, CdRom, Floppy, PlacaMae, etc.
Métodos: mudarEstado, obterHardDisk, obterProcessador, etc.
Por sua vez, cada atributo seria uma outra classe q tbm deveria ser descrita, exemplo:
Classe: HarDisk
Atributos: capacidade, rotacoesPorMinuto, tipo.
Métodos: obterCapacidade, obterRotacoesPorMinuto, obterTipo.
E assim por diante. Assim vc estaria dizendo q a classe Gabinte só existe se ás classes HardDisk, Processador, etc tbm existirem. Ou seja, Gabinete contém essas classes.
Seu professor de lascou com o tema “PC” heim?! Se ele for gente fina talvez ele nao se importe de vc nao entrar tanto dentro das classes. Talvez ele só queira uma abordagem mais geral pra testar seus conceitos de OO, exemplo: Herança, Polimorfismo, e etc.
paloma
Resumindo, fica mais claro se eu chamar o objeto cpu de gabinete, pq é dentro dele que estão todos os componentes, e este poderia ter o método liga desliga ok assim?
componentes estes que também poderiam ser objetos,
Bom vc ter dito isso. Perceba que um objeto pode ter dentro dele campos que são também objetos. A isso chamamos de composição.
Quanto ao lance dos métodos da CPU, vc poderia ter um método da própria cpu que foss assim:
processar(dados)
E, dependendo do parâmetro “dados”, o método processar da CPU, decidiria que tipo de ação ele deve tomar e pra quais componentes delegar estas ações.
paloma
Certo, mas falando só do que eu descrevi acima, dessa forma fica correto? Pq sei que tem muita coisa ainda há implementar, mas quero me referir apenas a esses objetos. :roll:
Mantu
Tá certinho! :thumbup:
paloma
:lol: Poxa que bom, isso é meio complexo, concerteza tem muita coisa pra implementar, mas se eu começar a colocar muita coisa logo de início, vou me perder nos conceitos, comecei o curso agora, e essa parte é de suma importância, valeu pela ajuda e boa vontade, vou continuar estudando e qualquer dúvida eu posto aqui.
Mantu
Faça melhor: Quando surgir uma nova dúvida, poste um tópico diferente, com uma pergunta especificando mais a sua dúvida (uma vez que daqui pra frente é bem possível que suas próximas dúvidas sejam mais específicas em relação ao tópico deste post aqui). E também ia ser legal se vc editasse o título deste post aqui e colocasse um “RESOLVIDO” antes ou (melhor) depois do nome deste post.
Divirta-se!!! :thumbup: