AULA 1 - Programação II - Graduação

De IFSC
Revisão de 11h35min de 27 de julho de 2017 por imported>Fargoud (→‎Abordagem de POO:)
Ir para navegação Ir para pesquisar

Origem da linguagem C++

A linguagem C foi desenvolvida pelos engenheiros Brian Kernighan e Dennis Ritchie, dos Laboratórios AT&T Bell, uma gigante das telecomunicações americana, na década de 70.

A ideia era desenvolver uma linguagem de baixo nível potente o suficiente para escrever e manter o sistema operacional UNIX. Mas a linguagem se mostrou tão poderosa, portável e robusta que seu uso acabou se disseminando no mundo inteiro.

Com a onda da programação orientada a objetos e da engenharia de software, Bjarne Stroustrup, tb dos laboratórios AT&T Bell desenvolveu a linguagem C++, no início da década de 80. A linguagem C++ pode ser vista como uma linguagem C aperfeiçoada, mais amigável ao usuário que a C, e orientada a objetos, isto é, utiliza CLASSES como elemento base de projeto.

Pacotes RAD

Sao os pacotes ou ambientes de desenvolvimento integrado (IDEs) chamados de “Rapid Application Development”.

  • Programação Orientada a Eventos e a Objetos
  • Conjunto completo de Ferramentas de Desenvolvimento - Compilador, Ligador, Executor, Depurador, etc (IDE - Integrated Development Environment)
  • Ambiente Gráfico GUI - Graphical User Interfaces
  • Acesso fácil e automático às Propriedades, Eventos e Métodos de cada classe
  • Biblioteca de classes e componentes.

Porque POO?

  • Modularidade - desenvolvimento mais rápido
  • Portabilidade - bibliotecas padrão
  • Reutilização - de componentes

A programação não é LINEAR. Não existe um único fluxo de execução.

Possibilidade de interface GRÁFICA!!!

Velha2.png

Descrição de um código OO

Em programação estruturada - fluxogramas:


Fluxogramaexemplo.png


Fluxogramaexemplo2.png




Em POO - diagramas UML:


Diagumlex1.png


Diagumlex2.png

Características da POO

Classes e Objetos

Classesobj.png


Encapsulamento

As classes, que “formatam” os objetos, encapsulam tudo aquilo que é necessário para que este objeto exista, seja particularizado e interaja adequadamente com outros objetos.

Assim, um determinado código não precisa conhecer a estrutura interna de um objeto, para relacionar-se com ele ↠ Basta conhecer sua interface!

Encapsul2.png


Encapsul.png


O objeto relaciona-se, então, com outros objetos por meio da interface (funções externas). Mas seu processamento interno (a implementação) pode ser completamente desconhecido do código usuário

Herança

Uma vez que se tenha definida uma classe mais geral (p.e. “Animal”), chamada de classe-base ou superclasse ou ainda classe-mãe, podemos gerar, a partir desta, classes mais especializadas através de Herança.

Estas sub-classes, ou classe-derivadas herdam todas as características da classe-mãe, além das suas particulares adicionais. Ex: (“Leão”, “Mosca”,”Cão”)

A Herança substitui, com vantagens, a reutilização de código tipo “Ctrl-C/Ctrl-V” pois diminui o número de LOCs, preserva o encapsulamento, etc.

Heranca.png

Funções Virtuais e Polimorfismo

Em cada subclasse que herda um método de uma superclasse, esta função-membro pode ser implementada de formas diferentes. Ex:

Funvirt.jpg


Polimorf2.png

Para que isto ocorra, o método deverá ser declarado como Virtual, na superclasse.

Sobrecarga

As linguagens POO permitem que operadores e funções tenham usos múltiplos - Sobrecarga Exs:

 Operador	Uso I			Uso II	
   <<		Stream de saída:	Desloc. à esq.:
               cout << “Alô Mundo!”	x = y<<2


A sobrecarga possibilita maior flexibilidade no uso dos objetos

Sobrecargaop2.jpg


Sobrecargaop.jpg

Modelagem de sistemas OO

ABSTRAÇÃO - PONTO CRÍTICO e parte mais difícil na construção de um software.


Modelagem bem feita: etapas seguintes consistem em simples CODIFICAÇÃO.


Caso contrário: muitos erros de programação, principalmente semânticos.

Exemplo de Aplicação:

Sistema que vai calcular, para uma determinada matriz de dados de entrada, parâmetros e testes estatísticos e apresentar graficamente os resultados.

Abordagem de programação procedural:

Desenvolve-se várias funções, cada uma para calcular um diferente parâmetro ou para aplicar um determinado teste, tendo a matriz de dados como argumento de entrada.

Ex:

float Aplica_Teste_T(int I, int J, float M[I,J]); 
float Calcula_Coef_Correl(int I, int J, int K, int L, float M[I,J], float N[K,L]);
float Calcula_Media(int J, float M[J]); 

etc.

Uma função ou módulo principal faz a monitoração das ações do usuário e chama as respectivas funções.

Abordagem de POO:

Identifica os diferentes classes e objetos envolvidos. Ex: Dados, Entrada_Dados, Saída_Resultados, Grafico_Saida, etc.

ModelagemOO.png

Ambientes de desenvolvimento C++

Existe uma infinidade de ferramentas e IDEs para programação C++.

Vamos nos ater, neste curso, ao desenvolvimento de códigos C++ orientado a objetos com interfaces GRÁFICAS, para Windows.

O ambiente RAD escolhido foi o Visual C++ pela simplicidade (#sqn) e leveza (kkkkkk), em comparação com vários outros, como o Visual Studio, por exemplo. Além disto, como o objetivo é desenvolver aplicativos de alto nível, é mais fácil selecionar uma IDE que é voltada para tal.

Existem inúmeras ferramentas de desenvolvimento, desde as mais simples, como Dev C++ e CodeBlocks, até as mais sofisticadas e mais adequadas para desenvolvimento para Web, ou para Banco de Dados, como NetBeans, Eclipse e Visual Studio.

O Visual C++ Express 2008

Pode ser baixado no link:

Visual C++ Express - versão gratuita

O aplicativo tem este ícone:

Iconevce.png

E este aspecto, quando iniciado:

Telainivce.png

Seleciona-se "File > New > Project".

Telaini2vce.png

Na janela aberta, edita-se um nome pro projeto e escolhe-se "Windows Form Application".

[[image: telaini3 vce.png|center]]