C++ Estacio de Sa

Click here to load reader

  • date post

    08-Jun-2015
  • Category

    Documents

  • view

    200
  • download

    10

Embed Size (px)

Transcript of C++ Estacio de Sa

Curso de Programao III

Introduo a POO

Linguagem de Programao C++Autores: Renato Borges Andr Clnio

ContedoCAPTULO 1 QUALIDADE DO SOFTWARE FATORES DE QUALIDADE EXTERNA Corretude Robustez Extensibilidade Capacidade de reuso Compatibilidade Outros aspectos MODULARIDADE - QUALIDADE INTERNA CRITRIOS PARA MODULARIDADE Decomposio Composio Entendimento Continuidade Proteo PRINCPIOS DE MODULARIDADE Lingustica modular Poucas interfaces Pequenas interfaces Interfaces explcitas Ocultao de informao (information hiding) CALCULADORA RPN EM C TIPOS ABSTRATOS DE DADOS CLASSES EM C++ O PARADIGMA DA ORIENTAO A OBJETOS EXERCCIO 1 - CALCULADORA RPN COM CLASSES CAPTULO 2 DESCRIO DE RECURSOS DE C++ NO RELACIONADOS S CLASSES COMENTRIOS DECLARAO DE VARIVEIS DECLARAO DE TIPOS DECLARAO DE UNIES PROTTIPOS DE FUNES FUNES QUE NO RECEBEM PARMETROS FUNES INLINE REFERNCIAS ALOCAO DE MEMRIA VALORES DEFAULT PARA PARMETROS DE FUNES SOBRECARGA DE NOMES DE FUNES PARMETROS DE FUNES NO UTILIZADOS OPERADOR DE ESCOPO 7 7 7 7 7 7 8 8 8 8 8 8 9 9 9 9 9 9 10 10 10 10 11 12 12 13 14 15 15 15 15 15 16 16 16 16 18 19 19 20 20 21

INCOMPATIBILIDADES ENTRE C E C++ PALAVRAS RESERVADAS EXIGNCIA DE PROTTIPOS FUNES QUE NO RECEBEM PARMETROS ESTRUTURAS ANINHADAS USO DE BIBLIOTECAS C EM PROGRAMAS C++ EXERCCIO 2 - CALCULADORA RPN COM NOVOS RECURSOS DE C++ RECURSOS DE C++ RELACIONADOS S CLASSES CLASSES ANINHADAS DECLARAO INCOMPLETA MTODOS CONSTTHIS CAMPOS DE ESTRUTURA STATIC MTODOS STATIC PONTEIROS PARA MTODOS

21 22 22 22 22 23 24 24 24 24 24 25 26 26 26 29 29 29 30 31 32 32 32 33 33 34 34 35 35 35 36 36 37 37 37 37 38 38 39 39 39 40

CAPTULO 3 ENCAPSULAMENTO CONTROLE DE ACESSO - PUBLIC E PRIVATE DECLARAO DE CLASSES COM A PALAVRA RESERVADA CLASS CLASSES E FUNES FRIEND EXERCCIO 3 - CALCULADORA RPN COM CONTROLE DE ACESSO CONSTRUTORES E DESTRUTORES DECLARAO DE CONSTRUTORES E DESTRUTORES CHAMADA DE CONSTRUTORES E DESTRUTORES CONSTRUTORES COM PARMETROS CONSTRUTORES GERADOS AUTOMATICAMENTE OBJETOS TEMPORRIOS CONVERSO POR CONSTRUTORES CONSTRUTORES PRIVADOS DESTRUTORES PRIVADOS INICIALIZAO DE CAMPOS DE CLASSES COM CONSTRUTORES EXERCCIO 4 - CALCULADORA RPN COM CONSTRUTORES CAPTULO 4 SOBRECARGA DE OPERADORES EXERCCIO 5 - CLASSE COMPLEX OPERADORES COMO FUNES GLOBAIS OPERADORES QUE PODEM SER REDEFINIDOS EXEMPLO DE REDEFINIO DO OPERADOR [] - CLASSE VECTOR OPERADORES DE CONVERSO EXERCCIO 6 - CLASSE COMPLEX COM OPERADORES GLOBAIS EXERCCIO 7 - CALCULADORA RPN PARA COMPLEXOS EXERCCIO 8 - CLASSE STRING

2

CAPTULO 5 ASPECTOS DE REUTILIZAO REQUISITOS PARA REUSO Variao no tipo Variao nas estruturas de dados e algoritmos Existncia de rotinas relacionadas Independncia de representao Semelhanas nos subcasos HERANA CLASSES DERIVADAS O QUE NO HERDADO MEMBROS DE CLASSES PROTECTED CONSTRUTORES E DESTRUTORES HERANA PBLICA X HERANA PRIVADA EXERCCIO 9 - CALCULADORA COMO UM OBJETO. CLASSE RPN. CAPTULO 6 POLIMORFISMO CONVERSO DE PONTEIROS REDEFINIO DE MTODOS EM UMA HIERARQUIA EXEMPLO: CLASSES LIST E LISTN EARLY X LATE BINDING MTODOS VIRTUAIS DESTRUTORES VIRTUAIS TABELAS VIRTUAIS CLASSES ABSTRATAS - MTODOS VIRTUAIS NULOS HERANA DE TIPO X HERANA DE CDIGO EXEMPLO: RVORE BINRIA PARA QUALQUER OBJETO CONVERSO DE UM OBJETO BSICO PARA UM DERIVADO ERANA MLTIPLA H ORDEM DE CHAMADA DOS CONSTRUTORES E DESTRUTORES CLASSES BSICAS VIRTUAIS CHAMADA DE CONSTRUTORES DE CLASSES BSICAS VIRTUAIS EXERCCIO 10 - CLASSE LIST CAPTULO 7

41 41 41 42 42 42 42 42 43 43 44 44 45 46 46 47 47 47 48 49 49 50 50 51 52 53 53 54 55 56 56 57 57 59

PROGRAMAO ORIENTADA A EVENTOS 59 59 A PROGRAMAO TRADICIONAL INTERFACES GRFICO-INTERATIVAS: O USURIO COMO MESTRE 59 O CONCEITO DE EVENTOS COMO PARADIGMA DE PROGRAMAO 59 O CONCEITO DE OBJETO (VERSUS PROCEDIMENTO) COMO MECANISMO DE PROGRAMAO59 O PACOTE GRFICO ORIENTADO A EVENTOS DOSGRAPH 60 UTILIZANDO O DOSGRAPH EM UMA APLICAO 60 EXERCCIO 11 - UMA APLICAO ORIENTADA A EVENTOS EM C. 60 EXERCCIO 12 - CLASSE APPLICATION 60

3

CAPTULO 8 PROJETO DE UMA APLICAO ORIENTADA A OBJETOS EXERCCIO 13 - OBJETOS GRFICOS QUE SE MOVEM NA TELA. PROPOSTA PARA O EXERCCIO 13 CAPTULO 9 TEMPLATES DECLARAO DE TEMPLATES USANDO TEMPLATES DECLARAO DE MTODOS NO INLINE TEMPLATES COM VRIOS ARGUMENTOS GENRICOS TEMPLATES COM ARGUMENTOS NO GENRICOS TEMPLATES DE FUNES EXERCCIO 14 - CLASSE VECTOR PARA QUALQUER TIPO. TRATAMENTO DE EXCEES FUNCIONAMENTO BSICO NOMEAO DE EXCEES AGRUPAMENTO DE EXCEES EXCEES DERIVADAS RE-THROW ESPECIFICAO DE EXCEES EXCEES INDESEJADAS EXCEES NO TRATADAS EXEMPLO: CALCULADORA RPN COM TRATAMENTO DE EXCEES CAPTULO 10 EXERCCIO 15 - TEMPLATE ARRAY COM TRATAMENTO DE EXCEES RECURSOS NOVOS DE C++ INFORMAO DE TEMPO DE EXECUO Consulta do tipo Type cast dinmicos BIBLIOTECA DE STREAMS STREAM I/O I/O COM CLASSES DEFINIDAS PELO USURIO MANIPULADORES ARQUIVOS DE ENTRADA COMO STREAMS TESTANDO ERROS EM UMA STREAM ARQUIVOS DE SADA COMO STREAMS FORMATAO NA MEMRIA APNDICE A - DOSGRAPH ENUMERAES DEFINIDAS PELO DOSGRAPH DGMODE DGCOLOR DGEVENTTYPE

61 61 61 61 63 63 63 64 64 64 65 65 66 66 66 68 69 70 71 72 73 73 73 75 69 75 75 75 75 76 76 77 78 78 79 79 79 81 81 81 81 81

4

TIPO DEFINIDO PELO DOSGRAPH DGEVENT FUNES DEFINIDAS PELO DOSGRAPH DGOPEN DGCLOSE DGWIDTH DGHEIGHT DGLINE DGRECTANGLE DGFILL DGSETCOLOR DGSETMODE DGGETEVENT APNDICE B - RESOLUO DOS EXERCCIOS EXERCCIO 1 - CALCULADORA RPN COM CLASSES STACK1.H STACK1.CPP CALC1.CPP EXERCCIO 2 - CALCULADORA RPN COM NOVOS RECURSOS DE C++ STACK2.H STACK2.CPP CALC2.CPP EXERCCIO 3 - CALCULADORA RPN COM CONTROLE DE ACESSO STACK3.H STACK3.CPP CALC3.CPP EXERCCIO 4 - CALCULADORA RPN COM CONSTRUTORES STACK4.H CALC4.CPP EXERCCIO 5 - CLASSE COMPLEX COMPLEX1.H COMPLEX1.CPP TESTE1.CPP EXERCCIO 6 - CLASSE COMPLEX COM OPERADORES GLOBAIS COMPLEX2.H COMPLEX2.CPP TESTE2.CPP EXERCCIO 7 - CALCULADORA RPN PARA COMPLEXOS STACK5.H CALC5.CPP EXERCCIO 8 - CLASSE STRING STRING.CPP EXERCCIO 9 - CALCULADORA COMO UM OBJETO. CLASSE RPN CALC6.CPP EXERCCIO 10 - CLASSE LIST LISTOBJ.H LISTOBJ.CPP TESTELIST.CPP EXERCCIO 11 - UMA APLICAO ORIENTADA A EVENTOS EM C POE.C

81 81 81 81 81 81 81 81 82 82 82 82 82 83 83 83 83 83 84 84 84 84 85 85 86 86 87 87 87 88 88 88 89 89 89 89 90 90 90 91 92 92 93 93 94 94 94 95 95 95

5

EXERCCIO 12 - CLASSE APPLICATION APL.H APL.CPP TESTE5.CPP EXERCCIO 13 - OBJETOS GRFICOS QUE SE MOVEM NA TELA AREA.H AREA.CPP DRAWING.H MYAPP.C EXERCCIO 14 - CLASSE VECTOR PARA QUALQUER TIPO VECTOR.CPP EXERCCIO 15 - TEMPLATE VECTOR COM TRATAMENTO DE EXCEES VECTOR2.CPP APNDICE C - LEITURA RECOMENDADA LIVROS DE C++ LIVROS GERENCIAIS SOBRE OO LIVROS SOBRE PROJETO OO

96 96 96 96 96 96 97 98 98 99 99 100 100 101 101 101 101

6

Captulo 1Qualidade do softwareO principal objetivo da Engenharia de Software contribuir para a produo de programas de qualidade. Esta qualidade, porm, no uma idia simples; mas sim como um conjunto de noes e fatores. desejvel que os programas produzidos sejam rpidos, confiveis, modulares, estruturados, modularizados, etc. Esses qualificadores descrevem dois tipos de qualidade: De um lado, considera-se aspectos como eficincia, facilidade de uso, extensibilidade, etc. Estes elementos podem ser detectados pelos usurios do sistema. A esses fatores atribui-se a qualidade externa do sofware. Por outro lado, existe um conjunto de fatores do programa que s profissionais de computao podem detectar. Por exemplo, legibilidade, modularidade, etc. A esses fatores atribui-se a qualidade interna do sofware. Na realidade, qualidade externa do programa em questo que importa quando de sua utilizao. No entanto, os elementos de qualidade interna so a chave para a conquista da qualidade externa. Alguns fatores de qualidade externa so apresentados na prxima seo. A seo posterior trata da qualidade interna, analisando como a qualidade externa pode ser atingida a partir desta.

Fatores de qualidade externa Corretude a condio do programa de produzir respostas adequadas e corretas cumprindo rigorosamente suas tarefas de acordo com sua especificao. Obviamente, uma qualidade primordial. Se um sistema no faz o que ele foi proposto a fazer, ento qualquer outra questo torna-se irrelevante.

Robustez a capacidade do programa de funcionar mesmo sob condies anormais. A robustez do programa diz respeito ao que acontece quando do aparecimento de situaes anmalas. Isto diferente de corretude, que define como o programa se comporta dentro de sua especificao. Na robustez, o programa deve saber encarar situaes que no foram previstas sem efeitos colaterais catastrficos. Neste sentido, o termo confiabilidade muito utilizado para robustez; porm denota um conceito mais amplo que mais bem interpretado como que englobando os conceitos de corretude e robustez.

Extensibilidade definida como a facilidade com que o programa pode ser adaptado para mudanas em sua especificao. Neste aspecto, dois princpios so essenciais: Simplicidade de design: uma arquitetura simples sempre mais simples de ser adaptada ou modificada Descentralizao: quanto mais autnomos so os mdulos de uma arquitetura, maior ser a probabilidade de que uma alterao implicar na manuteno de um ou poucos mdulos.

7

Capacidade de reuso a capacidade do programa de ser reutilizado, totalmente ou em partes, para novas aplicaes. A necessidade de reutilizao vem da observao de que muitos elementos dos sistemas seguem padres especficos. Neste sentido, possvel explorar este aspecto e evitar que a cada sistema produzido os programadores fiquem reinventando solues de problemas j resolvidos anteriormente.

Compatibilidade a facilidade com que o programa pode ser combinado com outros. Esta uma qualidade importante pois os programas no so desenvolvidos stand-alone. Normalmente, existe uma interao entre diversos programas onde o resultado de um determinado sistema utilizado como entrada para outro.

Outros aspectosOs aspectos resumidos acima so aqueles que podem ser bene