ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Criando arquivos .pas

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
corohsnk
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 27 de Janeiro de 2012
Mensagens: 176

MensagemEnviada: Dom Ago 16, 2015 4:15 am    Assunto: Criando arquivos .pas Responder com Citação

Pessoal, boa noite

Alguem que tenha experiencia pode me dizer se é viavel fazer o que estou fazendo?

por exemplo
estou padronizando alguns funções no sistema como a mascara do CPF ai eu criei uma unit chamada CPF e dentro dela o codigo ficou assim

Citação:
unit U_CPF;

interface
uses
System.SysUtils,Vcl.Mask,DataModulo, Vcl.Dialogs;

function formatcpf(num: string): boolean;


implementation


function formatcpf(num: string): boolean;
begin
Código
end;

end.


do jeito acima eu não crio uma classe então não preciso dar .create ao chamar a função em outro form , simplesmente declaro a unit no uses e depois digito o nome da função, gostaria de saber se não a problemas em fazer assim , ou preciso criar
Citação:
Type
TCPF= class
private
{ Private declarations }
public
{ Public declarations }

end;


e sempre que for chamar a função eu dou .create.

Também gostária de saber quando é viavel usar .pas da forma acima.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Dom Ago 16, 2015 9:24 am    Assunto: Responder com Citação

Isso chamamos de métodos estáticos ou programação procedural ou até mesmo programação imperativa, até nos dias de hoje seu uso é muito importante pois este é modelo base para a programação orienta a objetos.

A questão então quando usar programação procedural e quando usar programação orientada a objeto e quais as vantagens e desvantagem de ambos assim como se haveria algum conflito se adotar ambas no único projeto.


Vejamos então algumas funções que o próprio ambiente delphi possui que são estáticas (procedural)

now
stringreplace
date
copy
delete
pos
move


Note que todas estas funções são estáticas logo você não precisa instanciar uma classe para fazer uso das mesma, pois já estão previamente declarada em alguma unit do sistema estaticamente.

Não consigo ver um só programa usar 100% de código orientado a objeto pelo simples fato de você necessitar fazer uso de alguma função ou procedure estáticas mesmo que seja das units do proprio delphi.

Já pelo contrario você consegue produzir uma aplicação totalmente procedural claro sua manutenção é um trabalho monstro alem de tonar seu código muito repetitivo, sem muitos recursos e nenhuma interface.

Os usos dos métodos estáticos no meu ver são para operações simples ou para operações onde não se haja a necessidade de criar um objeto algo do tipo calcular uma soma de números ou vetores, verificar se uma determinado dado é valido tal como verificar se um cpf é valido ou se um texto estar formatado de forma adequada para utilização , manipular strings e ou números em geral com operações simples ou até mesmo um pouco complexas como criptografar texto.

Fazer apenas uso de métodos estáticos é um mau caminho e sinal de grandes dores de cabeça futuras, ficar bitolado a programação orientada também não é lá boa coisa, acredito que você deva fazer um estudo antes do que melhor atende sua necessidade.

Programação orientada a objeto é muito dependente de métodos estáticos, pois sem a mesma ela nada faria, não passaria de um simples texto sem proposito.

Em um grande resumo
Programação orientada a objeto é a forma mais eficaz de organizar o uso dos métodos estáticos.

Costumo fazer uso de ambas em meus projetos e por incrível que parece ainda faço bastante uso da programação procedural em meus projetos.

Das vantagens da programação orientada a objetos
Código mais enxuto
Reusabilidade
Permite novas implementação de métodos, objetos ou até mesmo classes sem interferir no que já estar feito.
Mais rapidez no desenvolvimento de projetos
Facilidade na manutenção dos códigos fontes
Dentre algumas outras mais


Das vantagens da programação procedural
São mais simples e direta sua criação ( indicado a quem estar iniciando, mas não dispensado aos mais experiente )
É normalmente vista por toda aplicação ( dependendo apenas da declaração de sua unit em uses )
São relativamente mais rápida em executar operações. ( isso varia de caso para caso )
São menos complexas se comparado a programação orientada a objeto
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Dom Ago 16, 2015 6:31 pm    Assunto: Responder com Citação

Complementando, existe uma terceira forma, OO e sem necessidade de criar os objetos.

Código:
type
  TCPFUtils = class
    private
    { Private declarations }
    public
    { Public declarations }
    class function FormataCPF(ACpf: String): Boolean;
end;


Para usar:

Código:
TCPFUtils.FormataCPF('12345678900');


Isso ajuda a manter funções relacionadas organizadas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
DonOctavioDelFlores
Colaborador
Colaborador


Registrado: Quarta-Feira, 12 de Setembro de 2007
Mensagens: 2630
Localização: Pra lá de Bagda

MensagemEnviada: Seg Ago 17, 2015 9:41 am    Assunto: Re: Criando arquivos .pas Responder com Citação

corohsnk escreveu:
Pessoal, boa noite

Alguem que tenha experiencia pode me dizer se é viavel fazer o que estou fazendo?

do jeito acima eu não crio uma classe então não preciso dar .create ao chamar a função em outro form , simplesmente declaro a unit no uses e depois digito o nome da função, gostaria de saber se não a problemas em fazer assim , ou preciso criar

e sempre que for chamar a função eu dou .create.

Também gostária de saber quando é viavel usar .pas da forma acima.


Uma unit só pra cpf é muita pouca coisa, tenta separar por categorias/funcoes. Cpf poderia ficar na unit Formatacoes por ex.

E pode criar sem a classe mesmo, no fim acaba sendo só burocracia quando a função é simples demais.
_________________
“The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
DonOctavioDelFlores
Colaborador
Colaborador


Registrado: Quarta-Feira, 12 de Setembro de 2007
Mensagens: 2630
Localização: Pra lá de Bagda

MensagemEnviada: Seg Ago 17, 2015 9:56 am    Assunto: Responder com Citação

strak2012 escreveu:
Isso chamamos de métodos estáticos ou programação procedural ou até mesmo programação imperativa, até nos dias de hoje seu uso é muito importante pois este é modelo base para a programação orienta a objetos.


Método estatico não é "programação procedural", método estatico é só uma forma de instanciamento em OO que por acaso é parecido com procedural. E tanto OO quanto procedural são imperativos.

Citação:

Já pelo contrario você consegue produzir uma aplicação totalmente procedural claro sua manutenção é um trabalho monstro alem de tonar seu código muito repetitivo, sem muitos recursos e nenhuma interface.


Procedural pode ser mais dificil de entender quando o código é complexo, mas "monstro", "repetitivo" e "sem interface(sic)" é desinformação total.

Citação:

Programação orientada a objeto é a forma mais eficaz de organizar o uso dos métodos estáticos.


Não. 500 métodos estáticos dentro de uma classe é exatamente igual a 500 procedures dentro de uma unit. No final a classe só serve de namespace... De "eficaz" não tem nada, é só burocracia.
_________________
“The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
claudio.ferreira
Profissional
Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013
Mensagens: 667

MensagemEnviada: Ter Ago 18, 2015 11:22 am    Assunto: Responder com Citação

De tanto ter que refazer programação procedural para OO devido a que passado algum tempo e tendo que dar manutenção no código e que eu mesmo fiz e já nem sabia ou lembrava mais como funcionava, agora não faço mais nada sem ser OO.

Não porque estou catequizado, não porque li muito sobre os papas da OO, GoF, Guinter Pauli, padrões de projeto, MVC, etc.. etc..

eu até li, mas não faço nada sem a comprovação de que é realmente eficiente.

Uso OO porque simplesmente me facilita a vida, consigo entender e ampliar o código feito de forma a que ampliado não me cause problemas de entendimento e pasmem também de funcionamento, porque um código que você não entende é provável que quando for mexer vá bugar outras partes.

É óbvio que se for fazer uma coisa bem rápida e pequena, ainda vá lá alguns procedures direto na interface da Unit, e até mesmo rotinas estanques sem necessidade de encapsulamento de dados, uso procedural, mas quando começa a complicar, já crio logo uma classe e coloco lá.

Depois de algum tempo programando e praticando OO, voce já sabe que tipo de código é elegível para estar numa classe ou não, no meu caso já consigo decidir antes de codificar se farei OO ou procedural, na maioria das vezes sai OO, nem penso 2 vezes.

Mas isso só se aprende praticando, sem praticar é mais difícil.


Obs : No caso do rapaz que pergunta se é melhor OO. A OO é melhor usada quando se pretende usar DADOS + CODIGO encapsulado, no caso da rotina de formatação não há dados que se pretenda manter e nem guardar o estado durante a execução em um objeto, então qualquer das duas opções é factível sem prejuízo algum do entendimento, manutenibilidade, testabilidade e da execução, ou seja OO ou procedural, tanto faz aí nesse caso.
_________________
Sistema SNGPC para farmácias
http://www.cmasistemas.com.br
Rastreabilidade de Medicamentos
https://www.sncm.com.br
Soluções em Delphi
https://delphisolutions.wordpress.com/
.
"E não sabendo que era impossível, foi lá e fez"
Mark Twain
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB