• Nenhum resultado encontrado

Linguagens de Programação

N/A
N/A
Protected

Academic year: 2021

Share "Linguagens de Programação"

Copied!
8
0
0

Texto

(1)

Departamento de Matemática e Computação Bacharelado em Ciência da Computação

Linguagens de Programação

Aula 08

Rogério Eduardo Garcia

(rogerio@fct.unesp.br)

2 7 /0 7 /2 0 1 7 R o g é ri o E d u a rd o G a rc ia 2

Linguagens de Programação

Paradigma Orientado a Objetos

C++

(2)

2 7 /0 7 /2 0 1 R o g é ri o E d u a rd o G a rc ia 3

Classificação quanto ao paradigma

Imperativo

Funcional

Lógico

Orientado a Objetos

2 7 /0 7 /2 0 1 7 R o g é ri o E d u a rd o G a rc ia

Definição (lembrando...)

Uma LP (Linguagem de Programação) é uma

linguagem destinada a ser usada por uma

pessoa

para expressar um

processo

através

do qual um

computador

pode resolver um

problema

. Os quatro modelos (paradigmas)

de LP correspondem aos pontos de vista dos

quatro componentes citados. A eficiência na

construção e execução de programas depende

da combinação dos quatro pontos de vista.

(3)

2 7 /0 7 /2 0 1 R o g é ri o E d u a rd o G a rc ia 5

Paradigmas

Paradigma Orientado a Objetos

Tratam os elementos e conceitos associados

ao problema como objetos.

Objetos são entidades abstratas que embutem

dentro de suas fronteiras, as características e

operações relacionadas com a entidade real.

2 7 /0 7 /2 0 1 7 R o g é ri o E d u a rd o G a rc ia 6

Paradigma Orientado a Objeto

O modelo Orientado a Objeto focaliza mais o

problema. Um programa OO é equivalente a

objetos que mandam mensagens entre si. Os

objetos do programa equivalem aos objetos da

vida real (problema).

A abordagem OO é importante para resolver

muitos

tipos

de

problemas

através

de

(4)

2 7 /0 7 /2 0 1 R o g é ri o E d u a rd o G a rc ia 7

Paradigma Orientado a Objetos

Não é um paradigma no sentido estrito: é uma

sub-classificação do imperativo. (Será?)

A diferença é mais de metodologia quanto à

concepção e modelagem do sistema.

A grosso modo, uma aplicação é estruturada em

módulos (classes) que agrupam um estado e

operações (métodos) sobre este.

Classes podem ser estendidas e/ou usadas como

tipos (cujos elementos são objetos).

2 7 /0 7 /2 0 1 7 R o g é ri o E d u a rd o G a rc ia

Paradigma Orientado a Objetos

Modelo computacional

Estado Entrada Programa Saída

Entrada Programa Saída Entrada Programa Saída

(5)

2 7 /0 7 /2 0 1 R o g é ri o E d u a rd o G a rc ia 9

Paradigma Orientado a Objetos

O paradigma da orientação a objetos considera objetos e classes

como blocos básicos de construção de um sistema. Sistemas são

vistos como coleções de objetos que se comunicam, enviando

mensagens, colaborando para dar o comportamento global dos

sistemas.

Uma classe determina o comportamento e a estrutura de objetos

similares (Célula, Mamífero, Réptil, Homo, Sapiens).

Pode-se dizer que a idéia da orientação a objetos foi importada a

partir da observação do comportamento de sistemas complexos

do mundo real (animais, plantas, máquinas, ou até mesmo

empresas), onde cada objeto possui um determinado conjunto de

responsabilidades dentro de um sistema, que normalmente estão

relacionadas com a manutenção de conhecimento e com ações

que devem executar.

2 7 /0 7 /2 0 1 7 R o g é ri o E d u a rd o G a rc ia 10

Paradigma Orientado a Objetos

Sistemas orientados a objetos apresentam hierarquias de classes, onde

classes mais genéricas são especializadas em classes mais específicas

(ex.: mamíferos -> felinos, primatas, canídeos, ...), e hierarquias de

objetos, onde objetos mais genéricos são compostos por objetos mais

específicos (ex.: planta é composta de órgãos, como o galho, que é

composto de células, ..., que são compostas de átomos, que são

compostos de prótons, neutrons, ..., que são compostos de quarks...).

SIMULA 67 foi a primeira linguagem a incorporar estes conceitos,

desenvolvida especialmente para a criação de aplicações de simulação.

Outra linguagem OO importante e pioneira é Smalltalk, originada na

dissertação de doutorado de Alan Kay em 1969.

Outras linguagens OO combinam características de linguagens

(6)

2 7 /0 7 /2 0 1 R o g é ri o E d u a rd o G a rc ia 11

Paradigma Orientado a Objetos

public class Elipse {

private int _X, _Y, _raioX, _raioY; public Elipse(int x, int y, int rx, int ry) { _X = x; _Y = y; _raioX = rx; _raioY = ry; }

public void DefinirRaios(int rx, int ry) { _raioX = rx; _raioY = ry;

}

public int InformarRaioX() { return _raioX; }

public int InformarRaioY() { return _raioY; }

public void Desenhar(Graphics area) { area.drawOval(_X, _Y, _raioX, _raioY); } };

Elipse e1;

e1=new Elipse(10,10,20,25);

e1.desenhar(g);

Exemplo

2 7 /0 7 /2 0 1 7 R o g é ri o E d u a rd o G a rc ia class Pessoa { protected: char nome[30]; char endereco[30]; public: Pessoa() { strcpy(endereco,"qualquer"); };

Pessoa(char n[],char e[]) {

cout << "construindo uma pessoa" << endl; strcpy(endereco,e);

strcpy(nome,n); }

void nonVirtualMostra() {

cout << "Pessoa: non-virtual function" << endl; cout << "Nome: "<< nome << endl;

(7)

Exemplo

2 7 /0 7 /2 0 1 R o g é ri o E d u a rd o G a rc ia 13

class Aluno : public Pessoa {

private:

char RA[15]; public:

Aluno(){};

Aluno(char n[],char e[],char ra[]):Pessoa(n,e) {

cout << "construindo um aluno" << endl; strcpy(RA,ra);

}

void nonVirtualMostra() {

cout << "Aluno: non-virtual function" << endl; cout << "Nome: "<< nome << endl;

cout << "RA: "<< RA << endl; }

void virtualMostra() {

cout << "Aluno: virtual function" << endl; cout << "Nome: "<< nome << endl;

cout << "RA: "<< RA << endl; } };

Exemplo

2 7 /0 7 /2 0 1 7 R o g é ri o E d u a rd o G a rc ia 14

int main(int argc, char *argv[]) {

Pessoa* baseP = new Aluno("rogerio","aqui","123"); baseP->nonVirtualMostra();

baseP->virtualMostra(); system("PAUSE"); return EXIT_SUCCESS; }

(8)

2 7 /0 7 /2 0 1 R o g é ri o E d u a rd o G a rc ia 15 class T { public : T(); virtual int f(); private : int d; }; void x(T& t) { t.f(); }

void __cdecl x(class T&): mov ecx,[esp+4] ;t mov eax,[ecx] ;vftable jmp [eax] ;f object vtbl +---+ +---+ | vtbl --+--->| f | +---+ +---+ | d | +---+ 2 7 /0 7 /2 0 1 7 R o g é ri o E d u a rd o G a rc ia

Referências

Documentos relacionados

5.1.15 No caso de erros decorrentes de preenchimento incorreto do formulário de inscrição, o inscrito terá até 03 (três) dias úteis após o exame para corrigir os dados pelo

• Uma declara¸ c˜ ao de classe pode conter membros privados ( private ), protegidos ( protected ) e p´ ublicos ( public ). • private : membros declarados como privados somente s˜

Novo modelo de matriciamento da rBLH com a Atenção Primária para fortalecer as Ações ao Aleitamento Materno no SUS (Meta 13.1 TED Desenvolvimento).. Plano de

Apesar de a Educação Ambiental ter se expandido, ela ainda é pouco abrangente e se caracteriza por ações pontuais e incipientes como prática a ser potencializada

• Projeção de classes genéricas que podem ser especializadas em classes mais particulares3. • Classes especializadas reutilizam o código das

31 O Plano Claro Pós MAIS 6Gb só permite a inclusão de 01 (um) dependente Internet Compartilhada ou Controle ou Claro Internet Pós Mais, não estando disponível a inclusão de

“responsabilidade pela solicitação de abertura de processo de flexibilização de jornada de trabalho ao Reitor, nos termos desta Resolução, de forma conjunta ou

A abertura de vagas de estágios nas empresas do setor eletro-eletrônico, instaladas na Zona Franca de Manaus-AM, que passaram a responder pela maior parte dos estágios na área