Pular para o conteúdo principal

Programação: Orientação a Objeto e suas Complexidades

Este é um simples artigo, demonstrando que nem sempre a Orientação a Objetos é uma Vantagem, e a sua utilização deve ser pensada com cuidado, para não gerar perda de tempo, brechas de segurança e erros.

No tempo em que estudava em um curso técnico, costuma resolver um algoritmo em especifico que solicitava a conversão de uma temperatura dada em Fahrenheit para graus Celsius. Sendo assim, é este o exemplo que irei usar para demonstrar que em alguns casos é melhor manter as coisas simples. 
O código usado, esta escrito em linguagem PHP.

Primeiro vamos usar a programação estruturada(se é que podemos chamar isso de estruturada) para alcançar o objetivo. Veja como o PHP nos permite resolver nosso problema, convertendo de forma muito simples uma temperatura dada Fahrenheit para Celsius com apenas 3 linhas de código.



E assim, você resolve o problema. E agora é um programador Feliz com tempo livre para estudar programação quântica.

Nota: A formula para se converter uma temperatura de Fahrenheit para Celsius pode ser tanto : C = ( F - 32 ) / 1.8
quanto : C = ( F - 32 ) * ( 5 / 9 )

as duas formulas retornam o mesmo resultado.

Agora, digamos que você deve encontrar a solução para o problema de conversão, utilizando Programação Orientada a Objetos. Certamente, seu primeiro passo será gerar um diagrama UML relacionando quais propriedades e métodos serão usados no algoritmo. 
Após isso, descobri-se, alguns métodos comuns a todas as categorias de temperatura e também, uma propriedade comum. Logo, cria-se uma classe abstrata para servir de modelo para as demais classes criadas.



Após criar a classe abstrata, programamos as demais Classes que herdam a mesa. Tomando cuidado para não esquecer de implementar os métodos abstratos da classe Pai.  
Uma vez que estamos, criando as classes separadas, podemos pensar já em implementar funções para conversão entre Celsius, Fahrenheit e Kelvin, que são as mais conhecidas.



Todas as classes classes que herdam temperatura, são muito parecidas, mudando apenas a formulá para conversão que é utilizada e a escala que é retornada. Sendo assim, seria possível criar uma classe "Conversor" para implementar apenas os métodos comuns a estas classes, evitando assim ter que duplicar seus códigos. 



Lembrando ainda, que estas classes são muito simples, e não estão de pleno acordo com todas as regras de boa programação. O correto em cada classe, seria implementar um controle de erros, mas lembre-se que, a cada nova linha de código que escrevemos, aumenta-se as possibilidades de gerar bugs e abrir brechas de segurança.



Por fim, e com a classe concluída, pode-se instanciar os objetos,passando como parâmetro a temperatura com que se quer trabalhar, e convertendo-a para qualquer outra temperatura.



E assim, implementa-se uma complexa orientação a objetos em PHP, que como citado no inicio, deve-se pensar bem sobre a necessidade. 

Comentários

Postagens mais visitadas deste blog

Dicas para Iniciantes - Clash of Clans

Este post visa apenas expor algumas dicas e experiências vividas até o momento no jogo Crash of Clans, desenvolvido para aparelhos da Apple, é indicado para quem não conhece o game ainda ou para quem apenas quer ler algumas dicas e experiências (ao fim) .  Sou o membro Osians  integrante do Clan Unrated.

How to play Clash of Clans on PC

A few days ago I was looking for a way to play Clash of Clans on my Desktop PC, but I just found fakes and links to surveys. After some frustrations I discovered that Clash of Clans now is available for Google Android, so I think that an easy way to play this game is to install an Android emulator on PC. There's a lot of Android emulator over the internet and after testing a bunch of these last month I conclude that the best choise is BlueStacks .  (You can download it at  http://www.bluestacks.com/  ) Note that I'll not teach you how to install it because there's a lot of tutorials and how-to's over the internet. - After install the emulator just execute it;  - You need to set up this, the system will ask you about a google account( if you haven't, go ahead and do one ); - Finally, into the Android emulator go to the Google Shop, search for Clash of Clans and install it. If the tip above is not clear or if you have any doubt, please let me know.

Rastreamento de Pedidos : Correios - PHP , API + XML

RESUMO Esse documento visa ensinar como implantar o rastreamento de mercadorias dos correios em um Website utilizando para isso a linguagem de programação PHP. Caso você queira apenas rastrear um Objeto dos Correios, pode fazer isso através do site Sooho clicando aqui  ou através do site dos Correios . Nota importante: Mediante as alterações de 2017 nos serviços dos correios, eu recomendo fortemente que use o tutorial do seguinte link: http://sooho.com.br/2017/03/24/rastreamento-de-pedidos-correios-php-soap/   Ele lhe dará uma solução de rastreamento definitiva e valida a longo prazo.

Bolo gelado de Maracujá com cobertura de Marshmallow frio e geleia de Brilho

Hoje um amigo na acadêmia pediu-me uma receita de bolo de maracujá, então, para " não deixar esse blog muito monótono " vamos aprender uma receita de bolo gelado de maracujá. =] (Foto ilustrativa retirada do site Anamaria  http://mdemulher.abril.com.br/revistas/anamaria/  ) O Bolo ou Torta de Maracujá (chame-o como quiser) é o que pode ser visto na foto acima. MASSA 06 ovos separados 02 xícaras (chá) de açúcar 03 xícaras (chá) de farinha de trigo ½ xícara (chá) de água 01 xícara (chá) de suco de maracujá 01 colher (sopa) de fermento em pó RECHEIO 01 lata de creme de leite s/ soro gelado ½ lata de leite condensado gelado 1/3 lata de suco de maracujá 01 colher (sopa) de emulsificante ** polpa de Maracujá MARSHMALLOW FRIO 03 Claras 09 colheres (sopa) cheia de açúcar 01 colher (sopa) cheia de emulsificante ** essência de baunilha á gosto GELEIA  DE BRILHO ½ xícara (chá) de água ½ xícara

Delphi - Inserir valor Moeda no TEdit

Estive pesquisando meios de usar um TEdit no Delphi com formatação como a dos Bancos em Moeda, para um Projeto antigo meu. Porém, achei apenas uma postagem falando sobre o assunto. (Link segue nas fontes) Mas, apesar de fazer o que eu queria, o código era um tanto complicado, pois da forma que estava seria necessário refazer o mesmo para todos os TEdits que eu fosse usar para inserir valores monetários além de ter que usar 2 eventos de cada TEdit ( OnkeyPress e OnChange ). Então, baseado nesse código criei uma pequena Procedure para fazer essa formatação de maneira simples. Para isso, basta passar como parâmetro o TEdit que deve ser formatado e o Key do teclado que será passado ao mesmo. Segue código comentado abaixo.

Desbloqueando Nintendo Wii 4.3

Bem, este não é um tutorial de como destravar seu aparelho Wii, visto que existem uma gama imensa de tutoriais na web descrevendo isso em passos simples, este artigo apenas visa mostrar as minhas experiências no destravamento de um novo Nintendo Wii Preto 4.3e. Ao final deste post deixarei as fontes que utilizei para desbloqueio do mesmo. Em agosto de 2011 minha irmã foi à Europa e por lá encontrou um nintendo Wii novo Preto com Motion Plus  super barato que vem por padrão na versão 4.3e. O Grande problema é que ele é bloqueado para região Europeia. A principio eu não queria ficar a cargo de desbloquear o aparelho. E fui até uma loja especializada consultar o valor de desbloqueio, que ficava em R$200,00 ... um preço salgado visto que o aparelho não custa tudo isso. O jeito é tentar desbloquear por conta própria, então fui pesquisar como fazer isso através da internet. Infelizmente - e diferente de Sony e Microsoft - a Nintendo divide seus consoles por Regiões, sendo estas America(

AppCake no lugar do Installous ( Outdated Version )

Uma vez que o Installous foi descontinuado e vive a emitir a todo momento a mensagem " Installous - Outdated Version " , a solução mais simples e pratica é troca-lo por uma app com as mesmas características, no caso o AppCake . Podemos instalar o AppCake através do Cydia . Vou ser rápido quanto a instalação do mesmo neste post visto que a instalação é simples. vamos aos passos: 1 - abra o Cydia e acesse Manage ; 2 - acesse Source toque em Edit e em seguida toque em Add (no canto superior esquerdo da tela); 3 - escreva  http://cydia.iphonecake.com e clique em Add Source ; 4 - Apos a instalação da fonte, volte ao cydia acesse Search e digite AppCake , toque na Aplicação que aparece no resultado e em seguida toque em Install no canto superior direito da tela.

Rastreamento de Pedidos : Correios - PHP + SOAP

Nota Importante:  Olá, esse mesmo artigo encontra-se atualizado em um novo site de minha autoria, o  Sooho   http://sooho.com.br/2017/03/24/rastreamento-de-pedidos-correios-php-soap/ , dêem preferência ao conteúdo ali contido, visto futuramente este blog ficara obsoleto. Obrigado.  O Código que se segue, é uma alternativa para rastrear objetos do Correio através do PHP com a tecnologia SOAP . Uma vez que a API mais antiga dos correios - PHP + XML -, não tem funcionado corretamente, resolvi por publicar esse método simples que espero ser de alguma ajuda a quem necessite. Codígo melhorado no Github:   https://github.com/osians/rastreamento-de-pedidos/ Bom, eu não vou me ater a uma extensa explicação sobre os detalhes do código, apenas gostaria de frisar algumas notas importantes.    - Primeiro:  se você pretende utilizar a API dos correios, tire um tempo e vá até uma Agência e solicite sua senha e username para uso da mesma.   - Segundo: A documentação para compree