Objetos

Tenho o seguinte exercício: defina um computador PC segundo os princípios de orientação a objetos.

  • OBJETOS DO COMPUTADOR
    1 - mouse;
    2 - teclado;
    3 - cpu;
    4 - estabilizador;
    5 - monitor.

  • CARACTERÍSTICAS DO OBJETO
    1 - mouse: com ou sem scroll, preto ou branco;
    2 - teclado: de diversas cores;
    3 - cpu: gabinete tipo torre ou não;
    4 - estabilizador: de diversas voltagens;
    5 - monitor: lcd, 15" ou 17".

Meu raciocínio está correto?

Acho que depende do quão detalhista você quer ser… :slight_smile:
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ê?

No caso desse exercício o objetivo é entender quais são os princípios de orientação a objetos :lol:

Mas a princípio meu raciocínio está correto?

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.

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:

- CARACTERÍSTICAS DO OBJETO
1 - mouse: 
	Propriedades:
		- scroll
		- cor
	Métodos:
		- mover()
		- clicarBotaoEsquerdo()
		- clicarBotaoDireito()
2 - teclado:
	Propriedades:
		- cor
	métodos:
		- teclar(tecla)
		- pressionar(tecla)
		- soltar(tecla)
e por aí vai...

Espero ter ajudado!
Qq coisa, poste mais

O que vc quer dizer com valores de propriedades ao invés de propriedades propriamente ditas?

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…

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.

Então a cor branca por exemplo, seria um atributo da propriedade cor, do mouse?

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!

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 ^^

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
:wink: :wink:

É 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:

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 :wink:

[quote=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
:wink: :wink: [/quote]

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! ^.^

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?

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

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.

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?

[code]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: gabinete
3.1 - ATRIBUTOS DO OBJETO gabinete: tamanho, cor, tipo
3.2 - MÉTODOS DO OBJETO: liga, desliga

4 - OBJETO: estabilizador
4.1 - ATRIBUTOS DO OBJETO ESTABILIZADOR: voltagem, cor
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

[/code]

Será que agora está tudo certinho :wink: