Definição para POO

[color=red]Olá Pessoal,
É um seguinte, preciso saber definir corretamente POO, estou entrando na área agora, fiz uma entrevista e não soube responder o que eles queriam ouvir, sei o que é e como funciona, mais não foi convincente nas minhas palavras, como eu faço pra poder definir, simples e objetivo? Isso é o que eu entendo, por favor, se não quiser responder, não precisa falar mal tbm, é que é tudo muito novo, e tem gente que não lembra que tbm teve essa fase.

Vlw, bjooooo

O que é Orientação a Objeto:
É uma forma de transferir coisas do mundo real para uma maquina, para o programa.É um paradigma (modo de pensar) representado por objetos, assim como na vida real.
Por exemplo, um telefone. O telefone tem características e funcionalidades.
Na orientação a objeto, o telefone seria o objeto principal, os atributos seriam as características,como a cor ou a marca,os métodos seriam as funcionalidades, como fazer uma ligação.(acho q esse exemplo não é muito bom, o telefone não tem mais nenhuma funcionalidade…RS*).
São divididas em classes, como se cada classe fosse alguma coisa. Exemplo, no mundo real uma pessoa, na POO, uma classe do tipo Pessoa.

Vantagens:
Permite maior utilização do mesmo código.
Fácil entendimento pelo usuário e pelo programador.
Possibilidade de trabalhar usando o que é mais importante, maior nível de abstração.

Desvantagens:
Maior uso de memória.
Dependência de outras classes, super classe, herança, super classes com características comuns.(O que eu acho que tbm pode ser bom)
Uma linguagem complexa de difícil aprendizado.

A definição mais simples é que o POO considera um software como um conjunto de agentes interconectados (o que conhecemos como objetos) que são definidos por meio de criação de classes. Para uma entrevista acho que isso basta, e dizer também os benefícios… propor a reusabilidade, manutenibilidade, produtividade e bla bla bla…

outra, repensar essas desvantagens, a segunda mesmo acho que n é muito correta e nem a terceira…

Brigadoo peladicas, é que li em uns outros sites.
Só achei uma definição meio complexa.

mais brigadoo

Essa é uma das definições mais simples, é pq vc ta iniciando agora e o funcionamento disso pra vc ainda é abstrato… mas com o tempo vc vai se acostumando…
procure boas referências pra estudar, as pessoas tentam sempre complicar mais em blogs, sites…
Veja os livros de engenharia de Sommerville, Wilson de Pádua ou Roger S. Presman
espero ter ajudado… =D

Obrigadooo
me ajudou sim, vou procurar ler esses livros, por que de certa forma eu entedi só não soube definir. :?

Obrigadoo

Boa tarde Marineli.

Como o nosso amigo Remixlara disse, a orientação a objetos é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos.

Em alguns contextos, prefere-se usar modelagem orientada ao objeto, em vez de programação. De fato, o paradigma “orientação a objeto”, tem bases conceituais e origem no campo de estudo da cognição, que influenciou a área de inteligência artificial e da linguística, no campo da abstração de conceitos do mundo real.

E por falar em abstração do mundo real, procure entender que as Classes são como se fossem o design de engenharia de um produto, e os objetos são os produtos finais em si, levando a vida humana e animal para dentro dessa abstração, eu diria que as Classes seriam a estrutura do DNA e os objetos, os indivíduos em si.

Toda Classe, quando gera um objeto, este objeto tem uma referência de mémoria RAM amazenada em uma variável o qual chamamos de instância da classe, a referência a essa memória é onde está armazenada toda a estrutura da Classe, através daquela instância que é o objeto em si, podemos invocar seu comportamento (Métodos) e acessar suas características (Atributos).

A melhor definição para Orientação ao Objetos, eu encontrei no Site do Wikipedia, no link abaixo, apesar de muitos não confiarem ainda neste site.
http://pt.wikipedia.org/wiki/Orientação_a_objetos.

Pessoal sou novo aqui no site e também em Java, :p. enfim estou estudando pelo livro dos “Deitel” e estou cursando Téc. em Inf.
Bom minha duvida em relação à POO é a mais simples: O que é? E para que serve um objeto? Sei que pode parecer um tanto estúpida a pergunta, já que definições é o que mais encontramos pela internet, porém não sou um cara de que quer falar bonito e sim de aprender realmente a “coisa”.
Lendo alguns posts e pelo próprio livro tirei as seguintes conclusões:
Os objetos são operários de uma classe, ou seja, a classe é somente um conjunto de ferramentas (Métodos e Variáveis) os operários que deverão definir como e onde essas ferramentas serão usadas.

Um objeto tem como uma das finalidades evitar que o mesmo método seja reescrito varias vezes em cada classe que for utilizado.
Cada classe pode conter vários objetos.

Os objetos de uma classe serão instanciados sempre em outras classes quando houver necessidade de chamada de métodos da classe pertencente ao objeto.

Estender uma classe significa herdar os atributos dela e não os métodos.

Gostaria se possível que vocês analisem e me digam se estou indo pelo caminho certo ou se estou segundo uma linha lógica errada.

Desde já agradeço quem responder e peço desculpas se postei em lugares errados ou afins (como sou novo aqui não estou habituado com as regras da casa: p)

Boa tarde Michael Mateus

Vamos responder por parte:

Tentando responder da maneira mais crua possível, os objetos virtuais servem para representar os objetos da vida real dentro de um computador. Eles são chamados de objetos, porque assim como na vida real, os objetos virtuais possuem um estado (que são seus atributos que são representados pelas variáveis internas) e possuem um comportamento (que são realizados pelos seus métodos).

É bem verdade que muitos tem dado muitos exemplos de objetos reais como carros, animais e etc. quando na verdade, os objetos que mais criamos estão mais ligados a Interface gráfica, outros sem interface gráfica servem para realizar trabalhos de armazenamento de banco de dados e muitas outras tarefas, isto quer dizer que eles (os objetos) se parecem como se fosse um invento que acabamos de criar e tocar na vida real, tal como uma caixa de relógio cuco ou um aparelho qualquer.

Os exemplos de objeto de interface gráfica, são o componentes da GUI (Grafical Users Interface), que são Frames ou Forms (que representa uma janela), comboboxes, textfields, jbuttons e etc.

Os exemplos de objeto sem inferface gráfica, são objetos criados como se fosse um caixa responsável para uma determinada tarefa, tal qual um ResultSet por exemplo, este ResultSet tem a finalidade precípua de armazenar dados recuperados de um banco de dados, criando formato de linha e coluna, como se fosse uma planilha do excel, só que sem interface gráfica.

Eu responderia que é mais ou menos isso, quanto os operários que deverão definir como e onde os métodos serão usados, isto está correto, porém eu não classificaria os objetos como sendo operários de uma classe. No post anterior e respondi que as classes são nada mais nada menos que o projeto de engenharia, o design do objeto em si. Tenha sempre em mente, se voce tem um objeto virtual, onde armazenaria os seus atributos que define o seu estado e onde armazenaria as ações que definiriam o seu comportamento :?: É necessário que todo o estado e o comportamento do objeto esteja armazenado em memória, para que voce possa recuperá-los depois, isto é armazenado na classe que define o objeto.

Isto já não está correto. Voce deve estar fazendo confusão de reescrita com sobrecarga, Em uma mesma classe voce só não pode fazer reescrita do mesmo método, ou seja declarar o mesmo método com mesmo nome e assinatura, porém pode fazer sobrecarga de métodos em uma mesma classe ou em classes herdadas, ou seja, a sobrecarga consiste em voce declarar o mesmo método com o mesmo nome, porém com assinatura diferente, entende-se por assinatura do método toda parte que vem depois do nome do método, ou seja, sua passagem de parâmetros tem que ser diferente. Já a sobreescrita de métodos só possível nas classes herdadas, ou seja, na herança de classes. Pesquise mais sobre o assunto "Sobreescrita X Sobrecarga de Métodos.

Isto já está correto, assim como uma classe representa uma projeto de engenharia de um objeto, então este projeto pode gerar vários objetos, não pode :?: Sendo que estes vários objetos serão do mesmo tipo da classe.

Isto está parcialmente correto, a chamada de um método dinâmico sempre a classe deverá ser instanciada, porém se o método for declarado como estático, voce só fará referência com o nome da classe seguida de um ponto e depois o nome do método.

Isto também está parcialmente correto, ou seja, estender tem o mesmo significado de herdar, e neste caso voce não só herda os atributos como também os métodos, desde que eles sejam declarados como públicos (Public) ou protegidos (Protected).

Espero ter te esclarecido.

tem várias respostas boas aqui, mas se não gostar o google tem tmb algumas definiçoes legais

:wink:

eu gosto de dar exemplos para melhor entendimento, foi o que fiz no post: http://analisedesistemas.wordpress.com/2010/06/05/programacao-orientada-a-objetos-introducao/