Jump to content

Qual a melhor abordagem ao iniciar um programa?


1050356

Recommended Posts

Boa tarde,

Apesar de já ter lidado com o vb.net tenho algumas questões, que surgiram quando senti na pele os problemas...

Na minha primeira abordagem à programação em vb.net escolhi criar uma aplicação criando desde logo uma windows form aplication.

Eu comecei a construir a minha aplicação a partir do Form e dos objectos que nele tinha... o que eu acho que não deve ser o ideal... penso eu.

Porque depois corremos o risco de sobrecarregar o objecto form com os restantes objectos que vamos criando, como por exempo, os objectos criados por nós e os objectos como datagrids,etc...

A certa altura deparei-me com problemas devido à má estruturação do programa, onde, verifiquei que objectos ficam vivos na memória e a cada clique no interface... seguida do processamento de determinada funcionalidade... a memória utilizada aumentava 10Mb.

Gostaria de saber qual é a pratica mais comum... se começa-mos com um programa do tipo consola e apartir dele vamos lançando as janelas que precisamos e criando os objectos que necessitamos para desempenhar determinada função.

Agradeço desde já a vossa atenção e aproveito para vos dar os parabens pelo magnifico forum.

Abraço,

1050356

Link to comment
Share on other sites

Eu, quando aprendi VB.NET, decidi começar pelas Console Applications: queria primeiro entender a linguagem, fazer testes com ela, experimentar.

Isto porque, numa Windows Application, tu vais começar a "entusiasmar-te" de mais com a interface, começas a colocar botões, depois queres mais e metes TextBoxes, queres mais e passas logo a ProgressBars, etc etc... Mas, no fundo, não sabes bem a linguagem e o seu funcionamento, a sua lógica.

A lógica de uma Windows Application é diferente da de uma Console Application no que diz respeito aos Subs: tens Handlers. Contudo, o resto é igualzinho. Eu acho que se acaba por ganhar maus hábitos começando logo com GUI - inevitavelmente vamos procurar funcionalidade antes de procurar eficiência.

Eu aconselho a primeiro aprenderes em Console Application, e só depois ires avançando para Windows Application.

  • Vote 1

Knowledge is free!

Link to comment
Share on other sites

Boas,

Obrigado por estares disposto a discutir este assunto comigo.

Eu comeci pelo C, com aqueles programas sequenciais, as rotinas, as subrotinas... não estava habituado a pensar em Objectos.

Ou seja, quando tive de fazer uma aplicação, obviamente surgiram algumas questões relacionadas à estruturação do problema, logo das classes também... o que afectava a facilidade de fazer debug e de desempenho do programa, já para não falar na possibilidade de reutilizar ...

Desde então tenho tentado melhorar...

Imaginemos, que eu já tenho as classes definidas e agora quero deixar "o papel" e começar a programar...

A certa altura tenho de criar uma form seja graficamente ou manualmente... para servir de interface gráfica para o utilizador, certo?

Uma vez que a interface é que vai permitir a entrada de informação vinda do utilizador é incontornavel que algum código vai ter de estar aqui.... o meu problema quando programei foi que tudo estava a ser criado no form principal... ou seja eu desenvolvi um programa todo pendurado no form principal o que fazia com que a aplicação estivesse "pesada".

Isto para chegar À questão: o meu problema foi não ter estruturado bem o problema em classes e por isso não consegui separar os vários blocos distintos do problema?

Como é que geralmente se faz... eu sei que esta parece uma pergunta tonta... mas eu apenas tenho aprendido por mim e não tenho com que trocar ideias, duvidas, etc...

Podiam-me dar uma ajuda!

Obrigado!

Abraços

Link to comment
Share on other sites

Tens aqui uma comunidade para te ajudar nas tuas dúvidas mais específicas. E o Visual Basic é uma área que tem muita gente aqui.

Se já aprendeste C, então o que tens de aprender bem é o paradigma OOP: o que é uma classe, o que são métodos e propriedades, o que são instâncias, o que é herança, encapsulamento e sobrecarga...?

Depois, uma Windows Application, dependendo de qual seja, do seu propósito, do seu funcionamento, do seu propósito e da sua lógica, poderá necessitar de mais que uma Form que se podem ajudar e suportar umas às outras.

E cuidado com as instâncias de classes: se crias uma instância, deves destruí-la quando já não precisas dela. Caso contrário poderás começar a criar instâncias repetidamente sem que elas sejam libertadas da memória. O método Dispose é o padrão do Visual Basic para destruir instâncias.

Nota: uma alternativa a "destruir" é dizer "libertar os recursos". Eu utilizo mais "destruir" porque em Pascal/Delphi os recursos das instâncias são libertados ou com o Free ou com o Destroy.

As tuas questões não são tontas, eu lembro-me de ter tido questões ainda mais "tontas" que as tuas. São perfeitamente legítimas quando se entra no paradigma OOP após algum tempo no paradigma imperativo - é um paradigma com horizontes totalmente novos e diferentes.

Cumprimentos.

Edited by thoga31
  • Vote 2

Knowledge is free!

Link to comment
Share on other sites

Estive a pensar no assunto e acho que não devo complicar o assunto, ou seja, Eu tenho de começar por algum lado, porque não constuir uma form para começar a construir um interface gráfico base, e encara-lo como um objecto que contém outros objectos.

Os objectos dessa janela vão gerar eventos, ao gerar eventos a função que tem o handler desse evento vai ser executada... certo?

Nessas funções é que eu tenho de começar a tratar as informações que me chegam do utilizador, sejam elas quais forem e passar às outras instancias de outras classes que descrevem o meu problema pelas suas "funções" que promovem uma interface com esse objecto. Devo ter o cuidado de à medida que deixo de utilizar os objectos os devo destruir para mais tarde serem removidos da memória pelo GC. certo?

Resumindo, posso encarar o meu interface gráfico base como uma "main", no sentido em que aqui é que vai começar o processamento de tudo o que vai acontecer na aplicação através dos eventos que o utilizador gerar...

é mais ou menos isto????

Aproveito para te colocar mais umas questões:

- para que servem as WPF aplication e as WCF Service Aplication?

- As console aplication: podemos fazer o mesmo programa embora com recurso À consola como acontecia por exemplo nos programas academicos de C, em que utilizavamos os scanf e os printf?

Ou nas console aplication podemos gerar também janelas??

Grande Abraço

Obrigado

Link to comment
Share on other sites

As Console Application não geram nenhum GUI, por isso mesmo é que há a distinção entre os dois tipos de aplicação. Uma Console Application trabalha tão-somente na consola (tipo linha de comandos), tal como os tradicionais programas em C, C++, Haskell, Python, Pascal... 😉

Quanto às outras 2 que referiste, não sei, nunca utilizei. O Google poder-te-á apontar a algumas páginas web que expliquem isso.

Quanto à tua ideia das Windows Application... Vamos organizar bem as coisas e não misturar Subs, controlos, Handlers, GUI, classes e instâncias - perdi-me um pouco ao ler o que escreveste 😛

Bem, a Form principal será, em princípio, o cerne do teu programa. A partir dele poderás aceder a outros Forms e tudo o mais. Depende da tua aplicação.

Tens mesmo de estudar bem as Windows Application. Estar agora aqui a explicar o princípio delas dava um verdadeiro tutorial, e disso é o que não falta pela Web, do inglês ao português. E ainda por cima Visual Basic, não falta mesmo informação 😉

  • Vote 1

Knowledge is free!

Link to comment
Share on other sites

Eu se calhar não fui muito explicito, peço desculpa!

Resumindo apenas queria passar a mensagem de que tudo o que vamos criar são objectos...

No caso de um botão que está dentro de uma janela, que por si só é outro objecto, cada um deles permite ao utilizador gerar eventos que na definição da class form vao ser interceptados e atendidos.

Considerando que eu criei outra classe que descreve o meu problema, tenho de criar um objecto da mesma para utilizar as suas funcionalidades.

Após criar uma instancia, da classe que pretendo, posso comunicar com ela através das suas interfaces (e este código ainda pode estar dentro da classe formulário base) e se assim estiver definido pela classe dessa instancia ela pode me retornar informação para a classe form onde eu estou a atender os eventos que o utilizador gerou.

No final devo ter atenção e fazer o destroy do objecto para que este não fique eternamente na memória.

É por ai...?!?

Obrigado pela paciência...

Abraço

Edited by 1050356
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.