Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Existe alguma vantagem quando eu uso Objetos e Classes com banco de dados?
Manutenção, com o código Orientado ele fica mais legível permitindo melhor manutenção do mesmo.
Ouvi dizer uma vez que um código perfeito é aquele que não precisa tirar nada o que me parece bem sensato.
Traz vantagengem porem ha desvantagem, perca de desempenho é um deles.
Manutenção, com o código Orientado ele fica mais legível permitindo melhor manutenção do mesmo.
Somente se for bem escrito...
A verdade é que escrever um bom código OO pode ser muito mais "ardiloso" do que o procedural. A orientação a objetos é cheia de conceitos que a maioria não conhece e cheia de padrões que a maioria não segue. Às vezes por ignorância, às vezes por preguiça mesmo.
É possível sim escrever código procedural legível e manutenível, o Kernel do Linux que vem sendo desenvolvido há mais de uma década é é essencialmente procedural. O Windows também é quase que totalmente procedural é desenvolvido com sucesso (há controvérsias) há quase 20 anos.
Traz vantagengem porem ha desvantagem, perca de desempenho é um deles.
Com base em que você afirma isso?
É verdade que os sistemas operacionais são desenvolvidos em C procedural, muitas vezes indo até o nível mais baixo que a linguagem permite, como macros e instruções de máquina em detrimento ao C++ porque comparando-se essas duas, a primeira se sai melhor em performance, justamente por permitir se trabalhar em um nível menor, como muitas vezes é requerido em um SO. Agora para aplicações em geral, a mesma coisa não vale. O que vale é a otimização feita pelo programador.
Mas por que a orientação a objetos faz tanto sucesso e é talvez o paradigma mais utilizado no mundo?
Pelo fato de que ela aproxima a programação do mundo real. Querendo ou não, para nós, seres humanos, é muito mais fácil entender abstrações do mundo real do que assembly ou instruções de máquina.
Faz muito mais sentido, em termos de compreensão humana, você ler:
$pessoa = new Pessoa("Zezinho");
do que:
add EAX, 20
mov ECX, EAX
mov EAX, 10
mul
(Não, os códigos não fazem a mesma coisa e eu não teria a pachorra de querer colocar aqui como objetos são transformados em código assembly).
A evolução dos paradigmas de programação mostram justamente a preocupação em tornar a programação cada vez mais próxima à linguagem humana do que à linguagem de máquina.
Se no início se programava em binário (sim, dando zeros e uns como entrada pro computador, imagina como era debuggar isso), passamos então às instruções de máquina, depois surgiram os mnemônicos que eram mais fáceis de lembrar (add, mov, mul).
O Fortran foi a primeira linguagem "alto nível" surgida, que possuía um compilador para transformar o código em instruções assembly. Criou-se então a programação estruturada, com blocos de código como ifs, elses, whiles, fors, etc... Da programação estruturada surgiu a programação procedural, que nos permitia modularizar o programa em blocos funcionais (os procedimentos ou funções) que permitiam a melhor organização do código.
Depois da criação de conceitos como tipos abstratos de dados, visibilidade de dados, herança e composição, naturalmente acabou surgindo a programação orientada a objetos. Uma vez detectados alguns problemas que a orientação a objetos não consegue resolver de maneira eficiente, tentou-se desenvolver outro paradigma, a orientação a aspectos, ainda em uma fase não totalmente consolidada.
Além disso, existem outros paradigmas que servem para propósitos diferentes, como a programação lógica, a funcional, a declarativa, etc, etc, etc...
Resumindo então, como vantagens, posso citar:
Como desvantagens:
Se eu continuar, posso ficar aqui até amanhã falando, mas acho que está bom...
Henrique, eu concordo plenamente com você.
o meu primeiro projeto grande tinha Suas classes e pra mim parecia ser um objeto ai conforme fui entendendo aquilo não era nem de longe um por que eu não utilizava várias regras, não era por que eu queria e sim por que eu não sabia que elas existiam ai através do curso que o João fez melhorei meu entendimento e recomendo a leitura.
Você colocou isso como uma desvantagem.
Muitas vezes, a quantidade de código escrita para atingir um resultado é bem maior do que se fosse feito proceduralmente (isso depende da aplicação e principalmente do desenvolvedor)
pois bem pode até ser mas se você escrever menos será difícil você ganhar a tal flexibilidade que falei, no caso do exemplo do curso que tinha um que era: "Atirei o pau no gato".
para qualquer pessoa atirar qualquer coisa em algo o seu código será claramente mais extenso, agora se simplesmente você atirar apenas o pau apenas no gato então você terá um código mais compacto sem a reutilização dele.
abraços, excelente explicação.
Com base em que você afirma isso?
O argumento dele é parcialmente válido.
Seguindo-se à risca os paradigmas, conceitos e Padrões que advém da Orientação a Objetos, principal, mas não exclusivamente, S.R.P., L.S.P. e, claro, Polimorfismo (esse é indireto) acabamos com dezenas de classes cada qual num arquivo diferente.
E a mais básica das formas de se usar uma classe é requerendo-a/incluindo-a o que está ligado ao filesystem que venhamos e convenhamos não é tão esperto quando desejaríamos que fosse.
O problema é que essa é uma afirmação preguiçosa porque almejando melhores graus de performance, o programador busca outras formas de requerer/incluir uma classe, seja por mapear os paths absolutos (diminuindo a deficiência de alguns servidores), cacheando os arquivos anteriormente incluídos ou ainda compilando cada módulo do sistema num super arquivo ou num PHAR.
hum.. galera tá falando sobre "Orientação a Objetos" em si.. mas não especificamente sobre a pergunta que foi feita.
Em relação a banco de dados, creio que a verdadeira vantagem de se usar Objetos, seja: "Poder alterar o Driver do banco" facilmente.
Num sistema procedural, a troca de um banco de dados, por exemplo de Mysql para PostGre, não é "simples". Pelo fato de que não temos uma mesma interface comum nesses 2 bancos.
Sair trocando "mysql_" por "pg_" não é nada fácil ou prático.(e nem suficiente).
Lógico que não estou levando em conta as particularidades do SQL, mas sim das funções envolvidas para realizar queries, retornar o número de linhas, resgatar o último ID inserido..
Escrever com funções uma interface comum para adaptar as 2 libs, é sim possível. Mas de longe é menos elegante e menos funcional, do que fazer o mesmo usando objetos.
Então respondendo a pergunta, creio que poder alterar de banco com mais facilidade, e no caso do mysql_ contra o mysqli, performance. Já que mysqli é mais rápido para realizar queries.
Henrique Barcelos sua explicação foi maravilhosa. Obrigado galera agora já percebi as vantagens e desvantagens.
Bom, uma das principais vantagens no uso de objetos e classes, está na reutilização de código, que de fato realmente é muito importante num desenvolvimento de software.
Eu sei mais vantagens, porém não consigo descreve-las. Prefiro que pessoas mais experientes lhe responda isso melhor!