|
![]() |
||
Artigo: Programação Orientada a Objetos: uma introdução
|
||
. Nós temos 673.946 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
Administração
Registrado em: Jul 2007
Mensagens: 3.504
Reputação: 32
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Este texto tem como objetivo explicar os conceitos básicos por trás da programação orientada a objetos e mostrar porque este tipo de paradigma de programação pode facilitar muito o desenvolvimento de um software. Marcio Frayze David 29/10/2007 http://www.guiadohardware.net/artigo...ntada-objetos/ Comente aqui! |
|
|
|
|
|
#2 (permalink) |
|
GeeK
|
Sugestão: que se aborde o tema "encapsulamento" e sua relação com a herança, assim como o tema "composição".
Herança é algo que deve ser planejada desde o começo, pois ela pode quebrar o encapsulamento. Dependendo do caso a Herança pode ser proibida (como no java com uma classe final). Herança também causa um acoplamento muito forte. Em alguns casos é preferivel/aconselhavel usar a composição. Quando aprendemos alguma linguagem OO, saimos criando classes e extendendo-as para praticar, porém nunca falam dos perigos dessa pratica. Num outro momento seria interessante mostrar 3 linguagens OO como C++, Java e Ruby para demonstrar alguns conceitos como - Sobrecarga de métodos e operadores - Herança multipla (C++ tem, java não tem mas usa interfaces, Ruby não tem mas tem mixins -- sem falar no problema do diamante) - Exceptions (java obriga a colocar alguns try/catch's) - Generics (Java 1.5 tem! Ruby usa duck typing) Posso até colaborar, se alguem tiver interesse. Observem que dei dicas aqui para quem quiser pesquisar por sua propria conta ;-) Aproveitando, deem uma olhada nesse artigo: http://fragmental.com.br/wiki/index.php/Fantoches http://blog.caelum.com.br/2006/10/14...jetos-heranca/ http://blog.caelum.com.br/2006/09/14...ers-e-setters/ Última edição por peczenyj : 29-10-2007 às 12:49. |
|
|
|
|
|
#3 (permalink) |
|
Novo Membro
Registrado em: Sep 2006
Mensagens: 102
Reputação: 8
![]() |
Simplesmente magnífico!
Mais simples que isso, impossível! |
|
|
|
|
|
#4 (permalink) |
|
Veterano
Registrado em: Jul 2001
Mensagens: 1.330
Reputação: 19
![]() |
Obrigado pelos comentários
![]() peczenyj: É verdade, esqueci de falar sobre composição, e realmente é importante saber quando usar herança e quando usar composição. Tem outras coisas que gostaria de ter falado, como interfaces, exemplos utilizando java, exception entre outras coisas. Mas "pegar" todos esses conceitos leva um bom tempo (pelo menos pra mim demorou batante para que pudesse realmente entender OO) e como o texto é mais voltado para iniciantes, tive que "cortar" umas coisas... quem sabe complemento em breve ![]() Estou escrevendo um outro texto, dessa vez focando em exemplos utilizando Java, mas o texto ainda está muito confuso e está faltando muita coisa... quando tiver algo mais concreto devo publicar em meu blog, e se o carlos permitir, aqui também ![]() FelipeBZ: Obrigado!! ![]()
__________________
Linux Registered User # 253244 |
|
|
|
|
|
#5 (permalink) |
|
GeeK
|
Por isso mesmo q eu sugeri vc escrever uma segunda parte ;-)
Qual é o seu blog? Boa sorte. |
|
|
|
|
|
#6 (permalink) | |
|
Veterano
Registrado em: Jul 2001
Mensagens: 1.330
Reputação: 19
![]() |
Citação:
Estava lendo seu blog... Tem muita coisa interessante Parabens! Já está cadastrado no meu RSS heheOs links que você enviou também são interessantes. Obrigado! []´s Marcio F. David
__________________
Linux Registered User # 253244 |
|
|
|
|
|
|
#7 (permalink) |
|
GeeK
|
Um exemplo que acabei de ver.
Um Camarada estava escrevendo uma classe Agenda. Ele tinha outra classe chamada ConexaoComBanco que fazia a conexão com banco de dados. Ai ele pergunta: Agenda deveria extender ConexaoComBanco ? Esta claro que não caiu a ficha pra ele, pois uma Agenda não é um ConexaoComBanco. Agenda Tem uma ConexaoComBanco. Perceba que tens uma segunda parte interessante por ai ![]() O exemplo do Carro-Vaga-Estacionamento é perfeito, no link sobre os Fantoches. |
|
|
|
|
|
#8 (permalink) |
|
Newbie
|
Parabens pelo artigo, estou vendo essa matéria na faculdade, seu artigo clareou bastante coisa, muito obrigado, valeu mesmo.
__________________
"Até o momento os filósofos apenas interpretaram o mundo, o fundamental agora é transforma-lo". |
|
|
|
|
|
#9 (permalink) |
|
Membro Senior
|
Buenas!
Olhes, realmente adorei esse artigo. Simplesmente o melhor que já lí a respeito de POO para iniciantes. É o chamado "pá-pum", pá leio, pum entendo. Não sei se compreendi por conta de outras leituras, acho que sim. Fica aí uma dica, ler vários documentos sobre o mesmo assunto. Irás pegando um pouco de cada um rumo a uma compreensão mais completa. É isso, grande abraćo, grato pelo artigo e os melhores votos de sucesso!
__________________
visites: http://cogitas3d.site.vu Gentoo 2005.0 - Athlon 2800 - 1gb ram - nVidia gf 5200 128mb |
|
|
|
|
|
#10 (permalink) | ||||
|
Super Participante
|
Tenho mais uma coisa para acrecentar no que não se pode discutir: Política, Religia, Futebol e POO.
Cada um que aprende uma coisa e entende bom começa a ver coisas erradas nas outras anteriores. 1. Programação Estruturada Citação:
Citação:
3. POO Tenho a impressão que esse artigo é uma tradução, deve ser por isso que leio e não compreendo certas frases afinal. Um "problema" que vi: A Classe Carro tem uma classe Vaga QUE TEM UMA CLASSE CARRO. Depois que o carro for estacionado vai ficar com um atributo Vaga que contém um Carro(pra quê?). 4. Herança e Composição Citação:
5. Artigos (pelo amor de Deus não tô massacrando ninguém) Fico incomodado com esses "artigos" cheios de: o código JavaBean é Anti-Full logo o FrameWork não é CopyLeft. Por favor façam algo mais profissional(mais neutro para ser entendido) e não algo que os colegas entendam. Citação:
O que importa é funcionar. Não ta funcionando pq tô usando isso, então qual o outro conceito melhor, pronto. |
||||
|
|
|
|
|
#11 (permalink) |
|
GeeK
|
O primeiro passo depois de aprender um conceito (como OO) é praticar.
Depois de praticar muito, vamos ler sobre ele. O pessoal da Caelum indica 3 livros interessantes: * Refactoring, Martin Fowler Livro do cientista chefe da ThoughtWorks, a famosa empresa onde nosso amigo Carlos Villela trabalha. Um excelente catálogo das gambiarras (smells, mal cheiro) que acabam aparecendo no seu código e como você pode fazer para conserta-las de maneira sensata. Ok, você já sabia disso. Exemplos clássicos são o uso de herança apenas por preguiça, uso do switch em vez de polimorfismo, entre milhares. Uma pena o código não usar a conveção da Sun e estar lotado de underscores… * Effective Java, Joshua Bloch Livro do ex bambambam da Sun (você pode encontrar o nome dele como @author das principais classes do Java SE), agora no Google. Aqui ele mostra como enfrentar os principais problemas e limitações da linguagem. Se você já programa a algum tempo sem dúvida alguma já passou por boa parte dos casos catalogados. Uma excelente leitura, além de simples pois cada caso é relatado em um texto bem curto. Entre os casos interessantes está o uso de factory methods, os problemas da herança e do protected, uso de coleções, objetos imutáveis e serialização. * Design Patterns, Erich Gamma et al O clichê dos clichês não poderia estar fora da lista! Livro do atual líder do projeto Eclipse, entre outros. Compre! E ao contrário do que muitos fazem não saia lendo o catálogo dos patterns decorando-os, concentre-se em ler toda a primeira parte onde eles revelam duas regras de ouro da programação orientada a objetos: “Evite herança, prefira composição” e “Programe voltado a interfaces e não à implementação“. Outra boa referência é "Concepts of Programming Languages", Sebesta, Robert W. Os primeiros capitulos são otimos! http://www.dca.fee.unicamp.br/~leand...as_turmaA.html |
|
|
|
|
|
#12 (permalink) | |
|
Veterano
Registrado em: Jul 2001
Mensagens: 1.330
Reputação: 19
![]() |
Citação:
Como sao programas relativamente pequenos, fica relativamente fácil de faze-los. Agora, um sistema para um banco com 20 pessoas fazendo o mesmo programa por exemplo, fica bem complicado de ser feito usando este paradigma (eu nao disse que é impossivel, mas é mais complicado). Sobre herança ser "ruim" também já vi gente falando isso... mas claro que isso é bobera! Só tem que tomar cuidado mesmo para não usar em hora errada, pq realmente pode trazer problemas serios para o sistema, mas quando bem aplicada, é muito útil. Eu particularmente gosto da ideia de um professor meu da faculdade, que disse para nós associarmos herança com a expressão "é um(a)". Dessa forma, se eu consiguir dizer "X é umY" (onde X e Y são 2 classes) é por que provavelmente trata-se de uma herança. Se essa frase soar estranho, desconfie. Exemplo: Passaro é um Animal. Essa frase não tem nada de errado, afinal, passaro é mesmo um animal (um tipo especifico). Logo, deve fazer sentido eu fazer com que a classe Passaro seja filha de Animal. Seguindo o exemplo do peczenyjAi e do amigo dele, quando ele pergunta: "Agenda deveria extender ConexaoComBanco ?" Bastaria a pessoa pensar: Agenda é uma ConexaoComBanco? Não? Então não é herança! Fica claro que a Agenda não se resumi a uma simples ConexaoComBanco, embora ela precise disso para existir. Para este caso, faz mais sentido a frase "Uma Agenda contem uma ConexaComBanco" ai fica claro que não é uma herança. Sempre penso nessas 2 frases quando preciso decidir se vou usar ou não herança.[]´s
__________________
Linux Registered User # 253244 |
|
|
|
|
|
|
#13 (permalink) |
|
Newbie
|
Excelente artigo para iniciantes. Me estimulou a estudar POO. Gostei muito!
__________________
Jack5on. |
|
|
|
|
|
#14 (permalink) | |
|
Newbie
Registrado em: Feb 2009
Mensagens: 8
Reputação: 0
![]() |
Citação:
Este tutorial explicou bem claro como funciona e serviu bem como base pra agora sim começar a ler mesmo aquelas apostilas. |
|
|
|
|
|
|
#15 (permalink) |
|
GeeK
|
Também achei excelente o artigo. Eu sempre aprendi programação estruturada, basicamente C.
Era difícil eu entender o conceito de OO, visto que nunca tinha visto uma explicação tão simples e fácil de entender. Parabéns! |
|
|
|
|
|
#16 (permalink) |
|
General de Pijama
Registrado em: Oct 2008
Mensagens: 3.569
Reputação: 32
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Perfeito...
parabens
__________________
E7200@3.16/HD4870/2gbddr2 Kingston |
|
|
|
|
|
#17 (permalink) |
|
Newbie
Registrado em: Mar 2009
Mensagens: 2
Reputação: 0
![]() |
Ótimo artigo!
Ele é muito esclarecedor pra que está levantando velas no mundo da POO. |
|
|
|
![]() |
| Opções do Tópico | |
|
|