Programação Orientada a Objetos existe mesmo? Ou é mito?

Pessoal

Bom dia!

Sou estudante. Estou estudando UML e Java.

Quero desenvolver um sistema de vendas orientado a objetos.

Entretanto na internet é difícil encontrar apostila que mostre de fato um modelo completo de um sistema verdadeiramente orientado a objetos.

o que eu encontro é apostilas com os conceitos que não aguento mais ler, herança, polimorfismo, encapsulamento e etc…

as video aulas de OO não retratam nada disso, somente conceitos, herança, poli…, encap…

Estou lendo o livro de Príncípio de Análise e Projetos de Sistemas com UML. Autor Eduardo Bezerra. Editora Elsevier.

Foi o melhor que achei até agora.

no livro explica que o projeto de um sistema orientado a objetos é ideal separar as classes

em classes de

1.fronteira
2.entidade(domínio do problema)
3.controle

que atores não tem acesso as classes do domínio

que as classes de fronteira recebem mensagens de ator externo e enviam mensagens para classe de controle

que as classes de controle encapsulam a a resolução do domínio do problema com as classes de entidade(mundo real)

que cada classe de controle devem resolver um determinado caso de uso

a minha dúvida é a seguinte pessoal:

  1. essa é a maneira realmente utilizada no mercado Java?

  2. a maioria dos desenvolvedores utilizam esse paradigma de orientação a objetos da UML? vejamos que instanciar classes não é POO verdadeiramente.

  3. como fazer classes do domínio enviar mensagens para um banco de dados?

  4. como modelar o banco de dados? as tabelas do banco tem que ser um espelho da classes de domínio?

  5. Existe algum livro ou TCC que aborde essa análise e projeto de forma completa: Ator -> Fronteira -> Entidade -> Fronteira -> SGBD?

não encontro nenhum modelo pronto usando verdadeiramente o paradigma orientação a objetos(mundo real)

Preciso saber qual o caminho correto para desenvolver um sistema de vendas com acesso a um SGBD.

Muito obrigado

Bruno

Jocê já leu o livro Use a cabeça! A&POO :?:

Comecei a ler ele, é muito bom (conceitos / exemplos / casos de uso / etc… ) mas na literatura, ou seja em livros, ainda não vi projetos do tamanho de aplicações do mundo real, apenas exemplos para que você possa aplicar os conceitos (que são os mesmos)

Dê uma olhada no livro Utilizando UML e Padrões, do Craig Larman.

então Drigo

tenho esse livro, ainda não li não

estou lendo um pouco do Deitel, um pouco do Eduardo Bezerra, e de Isaias Boratti.

nos livro e apostilas tem conceitos e conceitos…

mas o que eu preciso é de um modelo de projeto OO(mundo real) com de um sistema com CRUDs que enviem dados para classes Controle -> Entidade(mundo real) e com o domínio do problema resolvido essas classes enviem os dados para gravação num SGBD como Postgre por ex.

na prática

o Netbeans tem um wizard que gera um CRUD

entretanto

e o paradigma da OO(mundo real)?

é realmente utilizada?

preciso de um projeto simples pronto na prática com CRUD->domínio problema(mundo real)->SGBD

para ter a noção de como elaborar

tudo que encontro na net é conceitos e mais conceitos somente

Olá

Orientação à objetos em Java? acho difícil encontrar isso em Java, não é porque instancia-se algumas coisas e então já está programando orientado à objetos,
não, não é isso, objetos são verdadeiramente implementados na forma de COMPONENTES, aí vc tem realmente os 3 pilares da orientação:

  • herança
  • encapsulamento
  • polimorfismo

mas eu não vejo ninguém usando componentes em Java, alguns colegas já me disseram que na Eclipse tem mas não conseguem usar por algum motivo,
ah … e dos 3 pilares eu considero a herança o mais importante, sem herança não tem como haver orientação à objetos, não tem reutilização de código.

Abraço

[quote=gadriano] Olá

Orientação à objetos em Java? acho difícil encontrar isso em Java, não é porque instancia-se algumas coisas e então já está programando orientado à objetos,
não, não é isso, objetos são verdadeiramente implementados na forma de COMPONENTES, aí vc tem realmente os 3 pilares da orientação:

  • herança
  • encapsulamento
  • polimorfismo

mas eu não vejo ninguém usando componentes em Java, alguns colegas já me disseram que na Eclipse tem mas não conseguem usar por algum motivo,
ah … e dos 3 pilares eu considero a herança o mais importante, sem herança não tem como haver orientação à objetos, não tem reutilização de código.

Abraço
[/quote]

Errado amigo… evite, prefira agregar e compor objetos ao invéz de herda-lo…
Imagine o seguinte cenário vc tem uma classe abstrata automovel que tem penus, motor, lataria, volante, etc… vc pode criar novos automovel extendendo de sua classe automovel tipo caminhão, camionete, carro, etc… vc terá n classes onde em cada classe vc re-implementará os componentes do automovel (peneu, motor, volante,…) pois cada automovel tem seus componentes diferentes. Seria bem melhor se vc tivesse interfaces para estes componentes: interface(peneu, motor, volante,…), e na sua classe automovel seria composto por estas interfaces… assim vc só precisaria implementar e instanciar um componente de cada vez e não necessitar mudar todos a cada automovel diferente… assim cada automovel será uma composição de componentes comuns a automoveis.
não sei se deu pra entender mas ta ai um exemplo…

Então, aparentemente, pelos comentários acima, OO em Java é possível :?:
Sim :stuck_out_tongue:

Todos programadores Java utilizam?
Infelizmente não :cry:

Se você Iniciar qualquer projeto com esses conceitos (que você já deve estar cansado de ver) na cabeça, bem consolidados, seguindo os padrões de projeto, você fará sim uma aplicação orientada a objeto, sem repetição de código, com classes bem definidas, com bastante coesão e baixo acoplamento. :smiley:

procure sobre Domain Model Desing neste modelo sim é usado digamos “mais OO pura”…

Orientada a Objeto significa -> Reaproveitamento de código, organização do código facilitando a manutenção do programa…

é muito complexo isso mesmo né

tudo vi até agora está fragmentado

um pouquinho de conceitos aqui

outro pouquinho de conceitos ali

é complexo porque não há um caminho a seguir é criação pura

objetos de fronteira colaborando com objetos de controle com objetos de entidade com fronteira e ator banco de dados

tem que estudar muito mesmo

melhor ir para o jeitão evento estruturado que é mais rápido rsrs

luisthiagos

saudações

o que é uma Interface de Componentes

lembro que li que herança deve ser evitada

Mas eu acho que é assim mesmo que funciona, vc aprende os conceitos e aplica o máximo que pode em seus códigos.

Isso mesmo…

Os “modelos” que irão te guiar são os padrões de projeto… e nem é toda hora que se aplica…

Quanto a ‘separação’ das camadas, você já sabe muita coisa, é só por a mão na massa :smiley:

drigo

então acho que estou + ou -

no caminho

vou ver sobre os Patterns

vou criar minhas classe do jeito do mundo real com suas características de composição e ação e evitando recorrência de campos entre umas e outras

e depois fever a cabeça para ver como elas podem colaborar entre si

uma instância recebendo dados de um JFrame é fácil

o que preciso saber mais é como enviar esses dados para o banco após

eles terem sido digitados pelo Ator, passado para do JFrame para a classe controle CadastradorCliente por ex.

e na saída ir para o banco

outra coisa

falando de mensagens

por exemplo, neste código

umJogador.chuteBola(Bola b)
{
double gol = b.recebaChute();
}

quem é o Emissor?

quem é o Receptor?

quem é Mensagem?

nesse código há quantos Emissores e quantos Receptores?

:idea: Acho que ta tipo o jogador recebe uma mensagem ± “De um chute na bola b”
Neste caso ele é o receptor, o emissor ficou desconhecido

Então o jogador manda uma mensagem para a bola “Receba o chute”
Aqui o jogador é o emissor e a bola o receptor

Creio que seja isso mesmo…

drigo

o emissor nesse caso seria

por ex.

umTecnico.pecaChute(umJogador.chuteBola(Bola b));

ou

umTecnico.pecaChute(Jogador jogador)
{
jogador.chuteBola(Bola b);
}

nestes casos os emissores estão desconhecidos ainda?

não to conseguindo enteder

tem como você me dar um exemplo do emissor enviando mensagem para receptor, por favor

preciso saber para implementar em código os diagramas de uml

obrigado

não consegui

acho que entendi

o jogador está mandando uma mensagem bola.recebaChute

a mensagem é meio implícita né

[quote=Bruno Reis]luisthiagos

saudações

o que é uma Interface de Componentes

[/quote]

Quiz me referir a uma classe que implementa esta interface: por exemplo motor e um componente do carro, se tivemos motor de ferrari por exemplo este motor implementa a interface motor que ira dispor de metodos como ligarMotor, darPartida,etc… (como não entendo nada de motores), metodos que serão comuns a todos os moteres porem tem implementação distinta…