Pessoal, bom dia.
Hoje é dia 17/09,
setembro de 2020, 11h49 da manhã.
Estou aqui para falar do grupo de slides 17 parte A.
Bom, antes de mais nada, gostaria de dizer para vocês o seguinte,
primeiramente, antes de assistirem a parte A, assistam a parte B.
Então, aqui tem uma inversão de ordem,
o grupo de slides 17B precede a parte A,
vocês já vão entende o porquê.
Lá na parte B eu falo, também de programação visual,
falo de programação orientada a eventos
e objetos gráficos na programação visual,
com formulários, botões, caixas de texto e etc.
tudo no contexto de ambiente RAD, Rapid Application Development,
e lá na parte B, eu exemplifico, em um ambiente super intuitivo,
que é o ambiente C++ Builder.
Aqui nesse grupo de slides da parte A
a exemplificação do Microsoft, do Visual Microsoft em C++.
Antigamente, até a versão 2015 se eu me recordo bem,
o Visual Studio da microsoft
ele costumava trabalhar super bem com o RAD,
só que a partir do momento dado, que foi em 2017,
deixou de ser intuitivo o RAD para C++.
Eles optaram, por uma questão mercadológica quiçá, o que sei eu,
sobre ambiente RAD para C#.
Então, o que aconteceu na prática
foi que lá no menu opções, hora que você vai criar um projeto,
não tinha lá uma maneira de criar com RAD, com forms,
a partir de 2017, de maneira intuitiva para o caso do C++.
Você podia criar aplicações com form, ou seja, RAD para C#.
Então, em alguma medida, a partir de 2017,
o Microsoft Visual Studio,
ele deixou de ser RAD intuitivo para C++,
tanto é que se você quiser fazer uma aplicação RAD em C++, você tem que fazer toda uma estratégia,
que eu destaquei para vocês aqui no meu slide número 2.
Então, no Microsoft Visual Studio 2017
ainda era possível você fazer aplicações com formulários,
com RAD em C++, entretanto não de maneira intuitiva via menu,
você tem que fazer toda uma estratégia técnica
que está contada para nós aqui nesse link.
Vamos ver se ele abre para nós, automaticamente.
Abrindo.
Aqui ele conta uma estratégia de...
criação que você tem que fazer, de manipulação lá do ambiente, para conseguir fazer um ambiente com forms para C++.
Bom, isso considerado,
do ponto de vista de C++, o ambiente deixou de ser tão interessante como ele era
por isso que eu inverti a ordem de apresentações,
eu apresento primeiro o grupo de slides 17B, depois o 17A.
Inclusive para o Microsoft Visual Studio 2019,
pelos experimentos que eu fiz,
eu não consegui rodar os códigos que eu tinha anteriormente, que rodaram até o 2017,
não estão rodando no 2019.
Provavelmente, deve ter outra estratégia de compilação, de adaptação,
que você tem que ficar lá debulhando um pouco o ambiente e parametrizações para a coisa funcionar.
Ora, mas para você fazer isso, perde um pouco o sentido de aplicação RAD.
Bom, em todo o caso, está ai, vou ler os slides aqui.
Atenção, infelizmente o Visual Studio não tem mais
suportado via menu a criação intuitiva de soluções RAD via C++.
Para saber como contornar isto
para Visual Studio 2017, ver o link que segue, para Visual Studio 2019 necessário pesquisar.
Aqui nós temos no slide o seguinte:
Estudar os códigos de exemplo.
Entender que objetos gráficos são relacionados com código "especial" em C++,
diferente do que acontece lá no C++ Builder.
Você vai ver que no C++ Builder, hora que você entra no código gerado
a partir de formulários, a partir da parte gráfica,
ele é um código C++ aderente,
aqui não.
Então é necessário entender que este código C++ "especial" serve para tratar os eventos sobre objetos gráficos.
Então, a parte de formulários no Microsoft Visual C++,
mesmo quando o ambiente era RAD intuitivo,
a parte gráfica já era um C++ "dialetal".
Na verdade é um código de objetos controlados,
gerenciados por uma camada chamada .NET
que acaba compartilhando,
em alguma medida, códigos com o C#.
Dito de outra formal,
no Microsoft Visual Studio, você programava em RAD para C++,
você fazia a essência do seu código em C++
e a parte gráfica em um dialeto
inspirado no C++, mas que na verdade são para objetos gráficos
usando parte da base do C#,
basicamente isso.
Continuando.
Entender que, em um projeto correto, o código essencial do sistema
é o mais independente possível do código relacionado a objetos gráficos.
Isso já ficou mais ou menos entendido lá na parte nossa de...
grupos de slides 17 parte B,
onde você tinha a parte de formulários
separada da parte de código, em alguma medida,
criando aquele contexto que se tem na aula 17B.
Sobre MVC, Model View Controller.
Você tem a parte visual que são os forms,
você tem a parte de controle que seria a classe principal
e você tem a parte de modelo,
MVC, Model View Controller, a parte de modelo
seria lá no exemplo dado a classe Universidade e a classe Departamento
com os objetos instanciados.
Muito bem, continuando aqui.
No ProjetoOOJanelaExemplo
é tratada a classe Universidade e o seu Relacionamento para com a classe Departamento.
De forma análoga, é possível tratar as demais classes existentes nas versões precedentes do "sistema de universidade",
Disciplina, Alunos, etc, conforme eu já tinha indicado para vocês
lá na aula anterior 17B, insisto.
Bom, aqui a gente começa a entrar em exemplos.
Se você, a partir do momento que você consegue,
através de astucias técnicas no 2017, no 2019,
rodar a aplicação RAD para C++,
você vai encontrar uma situação conforme está escrito ai.
Ambiente supostamente RAD, Rapid Application Development,
você vai trabalhar com Button, TextBox, CheckBox, ComboCox, Label etc,
natural de ambientes RAD,
como vocês já observaram no exemplo anterior com o C++ Builder,
lembrando que foi o mesmo autor que criou
a base de RAD na Borland, onde foi criado o Delphi
e depois o C++ Builder,
esse mesmo autor foi trabalhar na Microsoft, então é natural que
esse ambientes tenham algumas singularidades conceituais.
Pode ser usado código gerenciado,
que é isso que eu estava falando, na verdade o...
o Visual Studio trabalha sobre o Microsoft .NET Framework,
ou seja,
as aplicações em C#, por exemplo, elas não vão rodar direto
no processador, em código binário, eles vão passar antes por uma camada que é o .NET,
para depois chegar lá.
Quando você trabalha em C++
no Visual Studio, na parte de C++,
sim, ele pode ser rodado direto, sem ser interpretado, compilado mesmo,
só que a parte gráfica, a parte de forms,
como já dizia na minha fala anterior,
ela vai trabalhar com uma linguagem C# like,
que eles chamam de CLR, Common Language Runtime.
Bom, dai esse CLR, Common Language Runtime,
se ele é C# like,
ele é baseado em tecnologia de máquina virtual.
O que é isso? Significa que você tem uma camada antes do processador que é a camada .NET,
aí a verdade é dizer que tem um conjunto de bibliotecas.
Pode ser usado código não gerenciado.
Usufrui-se do Visual C++ como gerenciador de projetos e compilador.
porém, perde-se todos os recursos do .NET, inclusive gráficos.
O que significa?
Quer dizer o seguinte,
se eu quiser um ambiente com janelas gráficas, botões, e etc
rodando em C++ puro rodando no Visual Studio,
ai eu não vou ter um ambiente RAD,
eu vou ter um ambiente mais tradicional
onde eu tinha que criar as janelas,
os botões, o gerenciador de eventos, tudo mais na unha,
de maneira mais técnica.
Eu posso salientar uma biblioteca aqui que é a Microsoft Visual...
perdão, Microsoft Foundation Class, MFC,
que, inclusive, é objeto de assunto do grupo de slides 17 parte C.
Aqui está mostrando que, tal qual no C++ Builder, aqui também no...
Visual Studio, você tem o Microsoft Visual Studio,
você vai ter ai um conjunto de classes
disponíveis graficamente dentro da ToolBox, você vai arrastar esses...
essas classes para os forms instanciando os objetos.
Aqui tem um exemplo de introdução, então,
isso aqui era assim com menu
até 2015, insisto,
você ia ali em Project
ai você tinha a opção de criar Windows Form Application para C++.
Insisto, isso não tem mais,
deixou de existir no ambiente, gente,
agora tem ali para Visual C#, por exemplo.
Insisto, se você quiser fazer um ambiente RAD
no Visual Studio contemporâneo, a partir do 2017, e imagino que 2019 também,
ai você tem que fazer uma série de astúcias técnicas,
que não é via menu, para você
setar, configurar a criação do ambiente que permite
RAD com C++ junto com esse código todo gerenciado
no Microsoft Visual C++ .NET.
Uma pena,
do ponto de vista de programador de C++, porque eu gostava de trabalhar nesse ambiente e era intuitivo,
quase tão intuitivo quanto o C++ Builder,
o C++ Builder ainda tem a vantagem de ter um código nos forms
muito mais aderente ao C++, que não é esse código,
como dizia nos slides anteriores,
um código gerenciado com máquina virtual, baseado em CLR, Common Language Runtime.
Lá no Builder é muito mais código de C++ mesmo,
mais purista, vamos dizer assim.
Uma pena isso não ter mais, quem sabe um dia nas versões próximas do Microsoft,
conforme as reclamações da comunidade.
Bom, dai você criava um form,
se você agora, agora nas versões novas como você não tem essa opção aqui,
se você fizer as astúcias técnicas, no final das contas você vai acabar tendo
no momento dado, você vai ter ali o form
que você vai poder montar as suas...
sua aplicação.
Daí, uma vez que você tem esse ambiente setada, reveem o mesmo,
você poder ver o código gerado no tocante do form,
aqui também você não precisa criar uma classe Form na unha,
você cria uma classe Form derivada, Form1, por exemplo, derivada de Form.
Vejam que aqui o código não é C++ puro, é um código lá
CLR, Common Language Runtime,
isso fica bem claro aqui, quando a pessoa olha isso aqui
que a coisa aqui não é C++ purista,
é esse Common Language Runtime, CLR.
Você vê, vamos dizer assim de maneira bem entre aspas, de maneira bem...
com licença poética,
é um C++ gráfico baseado em trabalho intermediário .NET,
dizendo de maneira bastante solta, bem entendido.
Bom.
O fato é que o form está aqui, está com o código gerado,
e você não precisou programar.
Aí você tem a opção de arrastar um botão,
você vai ver que, se você arrastar a classe Button para cima do form,
ele vai criar automaticamente códigos relativos a esse botão
lá no teu código de form,
ou seja, ele vai agregar um botão lá na classe Form1
e ademais vai fazer uma série de inicializações com relação a esse button1
na construtora dessa classe Form1,
e aí você pode rodar a coisa.
E aí claro, depois você pode fazer toda aquela brincadeira que a gente já fez no C++ Builder,
criar um EditBox, criar um CheckBox,
criar um TextBox, pode criar uma série de coisas.