ORIENTA?ÃO A OBJETOS NA PR?TICA
Bom, eu topo fazer a redação... vai ser feita em paralelo com outros dois livros que estou escrevendo, sobre ficção...
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.
Uma pena que o pessoal não tenha dado uma importância maior ao tópico.
Até agora nenhuma dúvida nem crÃtica.
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.
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.
FFCOUTO.
Parabéns pelo incentivo, realmente o seu conteúdo é ótimo.
Parabéns pelo incentivo, realmente o seu conteúdo é ótimo.
Um ótimo material pra dar a largada.
Parabéns FFCouto
Parabéns FFCouto
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!
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!
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.
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.
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.
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.
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.
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.
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.
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.
Faça seu login para responder