ORIENTA?ÃO A OBJETOS NA PR?TICA

KERPLUNK 17/07/2015 17:13:10
#449005
Bom, eu topo fazer a redação... vai ser feita em paralelo com outros dois livros que estou escrevendo, sobre ficção...
FFCOUTO 17/07/2015 19:38:04
#449010
Então tá fechado. Mande um MP pra gente acertar os detalhes.

Uma pena que o pessoal não tenha dado uma importância maior ao tópico.
Até agora nenhuma dúvida nem crítica.

TUNUSAT 17/07/2015 23:04:10
#449017
FFCOUTO,

Estou começando a ler a apostila, mas não entrou ainda nas [Ô]última atualizações[Ô], pois falta aprovação de um membro da equipe, no caso o WCosta.
Não consigo ainda pegar o código fonte ainda...

================================
C#
ORIENTACAO A OBJETOS NA PRATICA
WCOSTA
17/07/2015 11:08:46
================================

Se possível gostaria de fazer algumas críticas...

1 - Uma coisa que estou sentindo falta que acho que iria ficar bem bacana é separar cada camada por projeto, por exemplo:

================================
SISTEMA EXEMPLO CLIENTE / PRODUTO DE LOJA
http://www.vbmania.com.br/index.php?modulo=detalhe&id=9259
================================

2 - Outra coisa que seria interessante é criar pelo menos duas tabelas (no mínimo) com um relacionamento 1-N. Pelo pouco que li só tem a tabela de Contatos... desculpe eu achar muito pobre desta forma.
Se quer criar um coisa simples, então ponha uma tabela de operadoras de celular, uma tabela de telefones do contato (um contato pode ter nenhum até muitos telefones) e uma tabela de estados Brasileiros. Se quiser uma tabela de municípios... mais ai começa a complicar.

Por favor, vocês podem ver este projeto anexo [Ô]Contatos Equipe[Ô] que é muito parecido ao tema proposto? Eu fiz uma burrada e perdi uma atualização para colocar vários telefones ... acho que eu gravei uma versão velha em cima de uma nova... Eu já tinha criado uma tabela para guardar vários telefones de um contato ao invés de disponibilizar quatro campos no banco de dados e colocar quatro campos de preenchimento no form. Eu ia até colocar aqui, mas por causa deste meu erro fiquei um pouco desanimado...

Se você aceitarem que eu participe...

[][ô]s,
Tunusat.


GUIMORAES 18/07/2015 08:57:34
#449020
FFCOUTO.

Parabéns pelo incentivo, realmente o seu conteúdo é ótimo.
TEKO 18/07/2015 18:34:13
#449027
Um ótimo material pra dar a largada.

Parabéns FFCouto
JABA 19/07/2015 00:30:53
#449035
Excelente artigo FFCOUTO! Uma qualidade de código muito boa mesmo. Parabéns!!!

Já que você está querendo críticas, vou fazer uma.

Na minha opinião, o reflection é absurdamente encantador e deixa qualquer um de boca aberta pelo seu poder de implementação, mas não acho uma boa ideia colocá-lo como um dos ingredientes pra ensinar a um leigo no assunto questões sobre POO. Dessa forma, ele vai ficar muito amarrado ao aprendizado do reflection e com o foco descentralizado. Geralmente, quem utiliza esses recursos são pessoas que já possuem um bom domínio da plataforma e que já conhecem POO.

Como você focou muito na parte dos recursos do reflection, fica parecendo que pra aplicar a POO, só poderia ser dessa maneira. Na verdade, um dos grande pilares da POO é a abstração, reflection é apenas um recurso da plataforma que tem como principal objetivo evitar colocar códigos no registro do windows. Não estou dizendo com isso que o seu projeto está fugindo os princípios que norteiam o mundo da POO; pelo contrário, está tudo nos trinques!


FFCOUTO 19/07/2015 19:35:05
#449044
TUNUSAT,

As camadas estão divididas por projeto.
Pode verificar no arquivo que há um título para cada projeto e sub-títulos para cada classe usada.
Sei que não fica organizado como no VS.
Me dá um tempinho que vou enviar o projeto/solution para o tópico.

No arquivo, de fato só programei a tabela contatos, mas observe que há outra tabela a de [ô]Compromissos[ô], que eu deixei para que cada um pudesse desenvolver o código como forma de assimilar o conceito. Essa tabela tem o relacionamento 1-N com o id do contato sendo a chave estrangeira.
Claro que podemos incrementar o projeto com as suas sugestões. Elas sempre serão bem vindas. Inclusive usar seu projeto como base ou, até mesmo, mesclar os dois projetos.

E você é muito bem vindo na equipe. Quanto mais conhecimento pudermos agregar melhor será.


GUIMORAES123 e TEKO

Agradeço muito pelos elegios e fico feliz que gostaram do material.


JABA

Obrigado pelos comentários.

Na verdade a minha intenção não era utilizar o Reflection. Como falei no início, o objetivo era mostrar o uso da POO para utilização em banco de dados pois é um assunto muito recorrente aqui. Só que para isso não tinha outra maneira a não ser usar o Reflection, mas seu uso aqui ficou restrito ao CRUD.

Como é um projeto de exemplo, acaba por não ter muitas situções para usar abstração, herança, poliformismo.

Aproveitei para mostrar um pouco sobre os Designers Patterns que na minha opinião são muito importantes para complementar o uso da POO.

JABA 19/07/2015 20:50:17
#449048
FFCOUTO, na verdade quando se usa Reflection, você está indo contra alguns princípios S.O.L.I.D. Uma dessas quebras está no Princípio da Responsabilidade Única (a letra S do acrônimo). Perceba que quando criamos as classes que mapeiam o objeto em questão - como as que estão no seu projeto - está-se injetando regras que não fazem parte dele. Com isso, os objetos ficam amarrados a tecnologias.

Um padrão muito conhecido e muito parecido com o que você desenvolveu, é o Active Record, e tanto o Hibernate quanto o EntityFramework nos permite trabalhar com ele. Para fugir disso e não deixar que as nossas classes fiquem dependentes de tecnologias, os próprios ORMs nos trouxeram uma alternativa para mapear as nossas entidades, que são por XML, como o Hibernate, ou por outros objetos, como os Contexts do EntityFramework. Dessa maneira, nós trazemos a existência um camarada que é conhecido como POCO (Plain Old CLR Object).

Não é só por causa disso que vamos deixar de usar tais Frameworks. Apesar de algumas desvantagens e quebras de princípios, as vantagens compensam muito, e nos faz ter uma produtividade absurda. Eu mesmo sou um adepto dos ORMs, e aconselho a todos procurarem se aprimorar em tais tecnologias. Acho que tudo é uma questão de contexto, de bom-senso, e de conhecer o terreno que se está pisando.
TUNUSAT 20/07/2015 08:52:50
#449059
FFCOUTO,

Eu, particularmente, NÃO gostaria de fazer um livro voltado aos iniciantes, pois existem livro demais para iniciantes. Gostaria de fazer algo intermediário-avançado. percebi aqui no VBMania, tem muita gente intermediária querendo se tornar avançada (assim como eu). Nas empresas basicamente nunca usei técnicas. Usei bastante [Ô]DER[Ô] (Mas não em todas), muito pouco [Ô]DFD[Ô], muito pouco [Ô]DHS[Ô], um pouco de Diagrama de Classes e programação em 3 camadas. Me considero no máximo de nível intermediário e por causa disso o ambiente de trabalho me frustra um pouco. Por exemplo, adorei o que o JABA escreveu acima, isto é bem bacana de ser estudado. Os exemplos do livro devem, na minha opinião, mostrar os contrapontos das duas técnicas, vantagens e desvantagens.

========================================================================
S.O.L.I.D.
S – Single Responsiblity Principle (Princípio da Responsabilidade Única)
http://www.k19.com.br/artigos/solid-principio-da-responsabilidade-unica/
========================================================================
Pílula de Arquitetura - Princípios SOLID
http://www.macoratti.net/11/05/pa_solid.htm
========================================================================

Mudando de assunto.

Acho mais organizado, primeiro pensar na estrutura dos tópicos do livro.
Como seria legal organizar os tópicos no índice?

Poderia ser algo assim: Capítulos ímpares pura teoria, capítulos pares prática pura. Algo assim: Depois da teoria pura, o leitor terá certeza que irá aplicá-la de alguma forma no capítulo seguinte.

Exemplo tosco:

------------------------------
Índice

Prefácio - Abertura
- Para quem é voltado este livro?
- Por quê ser organizado, quais as vantagens e desvantagens?
- QUais são as principais técnicas atuais no mercado?

1 - Explicação histórica e teórica sobre as principais técnicas
1.1 - 3 camadas;
1.2 - MVC;
1.3 - S.O.L.I.D.;
1.4 - ...

2 - Aquecendo um pouco - Mão na massa, montando um sistema simples das antigas;
2.1 - Estrutura do Banco de Dados feita em DER ou MER;
2.2 - Programação em 1 camada;

3 - Explicação sobre Orientação a Objetos

4 - Montando uma classe na prática - Explicação das camadas UI, DAL, BLL e sobre o MODEL.

5 - ...

6 - Explicação sobre Herança x Classe Lacrada

7 - ...
------------------------------

Preciso de mais idéias... por favor, alguém pode ajudar aqui?


[][ô]s,
Tunusat.
FILMAN 13/08/2015 20:13:32
#449955
Eu gostei muito da apostila, mas o que você me diria sobre um sistema que tem mais de 150 tabelas? Qual a melhor patica a ser aplicada nesse caso?

Pois eu percebi que são instruções SQL sintéticas, ou seja, apontamentos direto para apenas uma tabela! Onde fica o relacionamento como os JOIN[ô]s?

Poderia me instrucionar em uma boa pratica para esse caso e até mesmo deixar mais rapido o sistema Desktop/Web??!!

Parabéns pelo material.
Página 2 de 3 [23 registro(s)]
Faça seu login para responder