Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

ADVPL Avançado - Capacitação Interna, Resumos de Sistemas Embarcados

ADVPL Avançado - Capacitação Interna

Tipologia: Resumos

2024

Compartilhado em 08/07/2024

sergio-magri-1
sergio-magri-1 🇧🇷

1 / 535

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Educação Corporativa
ADVPL Avançado
(Capacitação Interna)
Matriz – Av. Braz Leme, 1.717 – 02511-000 – São Paulo – SP – Brasil.
Tel.: 55 (11) 3981-7001 www.totvs.com.br
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe ADVPL Avançado - Capacitação Interna e outras Resumos em PDF para Sistemas Embarcados, somente na Docsity!

Educação Corporativa

ADVPL Avançado

(Capacitação Interna)

Matriz – Av. Braz Leme, 1.717 – 02511-000 – São Paulo – SP – Brasil. Tel.: 55 (11) 3981-7001 www.totvs.com.br

  • OBJETIVOS DO CURSO............................................................................................................................... ESTRUTURA DO TREINAMENTO
  • MÓDULO 05: Introdução à orientação à objetos
    1. Conceitos de orientação à objetos.....................................................................................................
    • 1.1. Definições
    • 1.2. Conceitos Básicos
    • 1.3. O Modelo de Objetos (OMT)
      • 1.3.1. Objetos e Classes
      • 1.3.2. Atributos
      • 1.3.3. Operações e Métodos
      • 1.3.4. Sugestões de desenvolvimento...................................................................................................
    1. Orientação a objetos em ADVPL
    • 2.1. Sintaxe e operadores para orientação a objetos
    • 2.2. Estrutura de uma classe de objetos em ADVPL
    • 2.3. Implementação dos métodos de uma classe em ADVPL
    1. Regras adicionais da linguagem ADVPL.............................................................................................
    • 3.1. Palavras reservadas..................................................................................................................
    • 3.2. Pictures de formatação disponíveis
  • MÓDULO 07: ADVPL Orientado à objetos II
    1. Componentes da interface visual do ADVPL - TSRVOBJECT().............................................................................................................................. - TFONT() - MSDIALOG() - TDIALOG() - TWINDOW() - TCONTROL() - BRGETDDB() - MSCALEND() - MSCALENDGRID()......................................................................................................................... - MSSELBR() - MSWORKTIME()............................................................................................................................ - SBUTTON() - TBAR() - TBITMAP() - TBROWSEBUTTON() - TBTNBMP() - TBTNBMP2()................................................................................................................................. - TBUTTON() - TCBROWSE()................................................................................................................................ - TCHECKBOX() - TCOLORTRIANGLE() - TCOMBOBOX() - TFOLDER() - TGET() - TGROUP() - THBUTTON() - TIBROWSER() - TLISTBOX().................................................................................................................................. - TMENU()...................................................................................................................................... - TMENUBAR() - TMETER() - TMSGRAPHIC() - TMSGBAR() - TMSGITEM()............................................................................................................................... - TMULTIBTN() - TMULTIGET().............................................................................................................................. - TOLECONTAINER()...................................................................................................................... - TPAGEVIEW() - 3 - - TPANEL() - TRADMENU().............................................................................................................................. - TSBROWSE().............................................................................................................................. - TSAY() - TSCROLLBOX() - TSIMPLEEDITOR()....................................................................................................................... - TSLIDER().................................................................................................................................. - TSPLITTER()............................................................................................................................... - TTABS()..................................................................................................................................... - TTOOLBOX() - TWBROWSE()............................................................................................................................. - VCBROWSE()
    • 4.1. Particularidades dos componentes visuais..............................................................................
      • 4.1.1. Configurando as cores para os componentes
    1. Aplicações com a interface visual do ADVPL....................................................................................
    • 5.1. Captura de informações simples (Multi-Gets)
      • 5.1.1. Enchoice()
      • 5.1.2. MsMGet()...............................................................................................................................
    • 5.2. Captura de múltiplas informações (Multi-Lines)
      • 5.2.1. MsGetDB().............................................................................................................................
      • 5.2.2. MsGetDados()
      • 5.2.3. MsNewGetDados()
        • 5.2.3.1. Definindo cores personalizadas para o objeto MsNewGetDados()
    • 5.3. Barras de botões.....................................................................................................................
      • 5.3.1. EnchoiceBar().........................................................................................................................
      • 5.3.2. TBar()
      • 5.3.3. ButtonBar
      • 5.3.4. Imagens pré-definidas para as barras de botões
    1. Outras aplicações da interface visual do ADVPL
    • 6.1. MaWndBrowse()
      • 6.1.1. Enchoice para Arquivos Temporários
    • 6.2. DbTree()
    • 6.3. MsSelect()
    1. Introdução à relatórios gráficos
    • 7.1. TReport()................................................................................................................................
      • 7.1.1. Introdução - Finalidade - Descrição................................................................................................................................... - Pré-Requisitos
      • 7.1.2. Impressão do relatório personalizável........................................................................................
        • 7.1.2.1. Parâmetros de impressão
          • Impressão..................................................................................................................................
          • Arquivo......................................................................................................................................
          • Spool
          • E-mail
          • Papel.........................................................................................................................................
          • Tamanho do papel
          • Formato da impressão
          • Configurações.............................................................................................................................
          • Título
          • Ordem.......................................................................................................................................
          • Layout
          • Preview
          • Executar em segundo plano
      • 7.1.3. Personalização........................................................................................................................
        • 7.1.3.1. Editando o layout do relatório
          • Nova estrutura do relatório TReport:
      • 7.1.4. Definindo a Função ReportDef()................................................................................................ - DEFINE REPORT.......................................................................................................................... - DEFINE SECTION - DEFINE CELL
  • MÓDULO 08: Aplicações ADVPL para o ERP - 4 -
    1. Protheus e o TOPCONNECT / TOTVS DbAccess
    • 8.1. Características técnicas com o uso do TOTVS DbAccess - Comportamento de Queries – Colunas Calculadas - Comportamento diferenciado com Bandos de Dados PostGres - Conceito de Índices Permanentes e Diferenças das RDDs - Funcionamento Interno................................................................................................................ - Quebra de Compatibilidade com CodeBase/DBF - Lista dos códigos de erro do TOPConnect / DbAccess.......................................................................
    • 8.2. Funções ADVPL para TOPCONNECT / TOTVS DbAccess - Lista das funções de interação com a aplicação TopConnect / DbAccess:............................................ - Lista das funções acessórias utilizadas nos fontes como facilitadoras:................................................ - Funções de interação com o TopConnect / DbAccess - TCCANOPEN () - TCCONTYPE() - TCDELFILE()............................................................................................................................... - TCGENQRY() - TCGETDB() - TCLINK() - TCQUERY() - TCQUIT() - TCSETCONN() - TCSETFIELD() - TCSPEXEC() - TCSPEXIST() - TCSQLERROR()........................................................................................................................... - TCSQLEXEC() - TCSRVTYPE() - TCUNLINK() - TCCHKOBJ()............................................................................................................................... - TCEXEERROR() - TCPGMEXE() - TCSYSEXE() - Funções acessórias para uso em fontes com interação com o TOTVS DbAccess................................... - CHANGEQUERY() - RETFULLNAME().......................................................................................................................... - RETSQLCOND() - RETSQLNAME()........................................................................................................................... - RETSQLTABLE().......................................................................................................................... - SQLCOPY()................................................................................................................................. - SQLORDER() - SQLTOTRB()...............................................................................................................................
    • 8.3. Aplicações com controle de comunição com o Banco de Dados
      • 8.3.1. MaWndBrowse com Alias Temporário gerado por Query...............................................................
        • Exemplo: MaWndBrowse com Alias Temporário gerado por Query.....................................................
      • 8.3.2. Banco de dados de interface
        • Considerações relevantes sobre as funções TCLink() e TCSetConn()..................................................
        • Considerações complementares sobre o conceito de Banco de Dados de Interface
    • 8.4. Embedded SQL – Facilitador de Query’s - Disponibilidade do Recurso........................................................................................................... - Características operacionais - Sintaxe............................................................................................ - Limitação:.................................................................................................................................. - Erros de Compilação.................................................................................................................... - Erros de Execução....................................................................................................................... - Características operacionais - depuração........................................................................................ - Função auxiliar - GETLastQuery()..................................................................................................
    1. Funcionalidade MsExecAuto - Sobre a MsExecAuto e Rotinas Automáticas.................................................................................... - Quando utilizar a funcionalidade MsExecAuto? - Processos da aplicação ERP com tratamentos para execução por MsExecAuto..................................... - Quando não utilizar a funcionalidade MsExecAuto
    • 9.1. Desenvolvendo aplicações com MsExecAuto - Estrutura de uma rotina com execução de MsExecAuto - Variáveis de controle - Montagem dos arrays de parâmetros............................................................................................. - Definição dos parâmetros específicos da rotina que será executada...................................................
      • Controle de transação - 5 -
      • Tratamento de mensagens de erro................................................................................................
      • Aplicação completa de importação utilizando MsExecAuto: Carga de imobilizado
    1. Recursos de envio de e-mail
      • Funções para manipulação de e-mails
      • Detalhamento das funções de manipulação de e-mails.....................................................................
      • CALLPROC()
      • MAILSMTPON()
      • MAILPOPON()
      • MAILSMTPOFF()..........................................................................................................................
      • MAILPOPOFF()
      • MAILRECEIVE()...........................................................................................................................
      • MAILAUTH()
      • POPMSGCOUNT()........................................................................................................................
      • MAILSEND()
      • MAILGETERR()............................................................................................................................
      • Exemplos de utilização das funcionalidades de envio e recebimento de e-mail
      • Envio de mensagens utilizando sintaxe clássica
      • Envio de mensagens utilizando funções
      • Recebimento de mensagens utilizando funções
    1. Integração básica com MsOffice..................................................................................................
    • 11.1. Exportação para EXCEL
      • DLGTOEXCEL()
      • Exemplo de exportação para o Microsoft Excel utilizando a função DlgToExcel()..................................
  • APÊNDICES..............................................................................................................................................
    • Relação de imagens para aplicações visuais........................................................................................
  • LISTAS DE EXERCÍCIOS
    • Projeto: Avaliação prática do treinamento de ADVPL Avançado
  • REFERÊNCIAS BIBLIOGRÁFICAS..............................................................................................................
  • GUIA DE REFERÊNCIA RÁPIDA: Funções e Comandos ADVPL
    • Conversão entre tipos de dados...........................................................................................................
      • CTOD()......................................................................................................................................
      • CVALTOCHAR()...........................................................................................................................
      • DTOC()......................................................................................................................................
      • DTOS()......................................................................................................................................
      • STOD()......................................................................................................................................
      • STR()
      • STRZERO()
      • VAL()
    • Matemáticas
      • ACOS()......................................................................................................................................
      • CEILING()
      • COS()........................................................................................................................................
      • LOG10()
      • SIN().........................................................................................................................................
      • SQRT()
      • TAN()
    • Análise de variáveis.............................................................................................................................
      • TYPE()
      • VALTYPE()..................................................................................................................................
    • Manipulação de arrays.........................................................................................................................
      • AADD()......................................................................................................................................
      • ACLONE()
      • ACOPY()
      • ADEL()
      • ADIR().......................................................................................................................................
      • AFILL()
      • AINS().......................................................................................................................................
      • ARRAY()
      • ASCAN()
      • ASCANX()
      • ASIZE()
    • ASORT() - 6 -
    • ATAIL()
  • Manipulação de blocos de código.........................................................................................................
    • EVAL().......................................................................................................................................
    • DBEVAL()...................................................................................................................................
    • AEVAL().....................................................................................................................................
  • Manipulação de strings........................................................................................................................
    • ALLTRIM()..................................................................................................................................
    • ASC()
    • AT()
    • BITON().....................................................................................................................................
    • CAPITAL()
    • CHR()........................................................................................................................................
    • DESCEND()
    • GETDTOVAL().............................................................................................................................
    • ISALPHA()..................................................................................................................................
    • ISDIGIT()
    • ISLOWER()
    • ISUPPER()..................................................................................................................................
    • LEN()
    • LOWER()....................................................................................................................................
    • LTRIM()
    • MATHC()....................................................................................................................................
    • OEMTOANSI()
    • PADL() / PADR() / PADC()............................................................................................................
    • RAT()
    • REPLICATE()
    • RETASC()...................................................................................................................................
    • RTRIM().....................................................................................................................................
    • SPACE().....................................................................................................................................
    • STRTOKARR().............................................................................................................................
    • STRTRAN().................................................................................................................................
    • STUFF()
    • SUBSTR()
    • TRANSFORM()
    • UPPER().....................................................................................................................................
  • Manipulação de data / hora.................................................................................................................
    • CDOW().....................................................................................................................................
    • CMONTH()
    • DATE()
    • DAY()
    • DOW().......................................................................................................................................
    • DTOC()......................................................................................................................................
    • DTOS()......................................................................................................................................
    • ELAPTIME()
    • MONTH()
    • SECONDS()................................................................................................................................
    • TIME().......................................................................................................................................
    • YEAR()
  • Manipulação de variáveis numéricas
    • ABS()
    • ALEATORIO()
    • INT().........................................................................................................................................
    • NOROUND()
    • RANDOMIZE()
    • ROUND()
  • Manipulação de arquivos
    • ADIR().......................................................................................................................................
    • CGETFILE()
    • CPYS2T()
    • CPYT2S()
    • CURDIR()...................................................................................................................................
    • DIRECTORY()
    • DIRREMOVE().............................................................................................................................
    • DISKSPACE()
    • EXISTDIR()
    • FCLOSE()...................................................................................................................................
    • FCREATE() - 7 -
    • FERASE()
    • FILE()........................................................................................................................................
    • FILENOEXT()
    • FOPEN()
    • FREAD()
    • FREADSTR ()
    • FRENAME()
    • FSEEK().....................................................................................................................................
    • FT_FEOF()
    • FT_FGOTO()...............................................................................................................................
    • FT_FGOTOP()
    • FT_FLASTREC()
    • FT_FREADLN()............................................................................................................................
    • FT_FRECNO()
    • FT_FSKIP()
    • FT_FUSE()
    • FWRITE()...................................................................................................................................
    • MSCOPYFILE()
    • MSCOPYTO()
    • MSCREATE()
    • MSERASE()
    • MSRENAME()..............................................................................................................................
    • RETFILENAME()
  • Manipulação de arquivos e índices temporários
    • CRIATRAB()
  • Manipulação de bases de dados...........................................................................................................
    • ALIAS()
    • BOF() / EOF().............................................................................................................................
    • COPY()
    • COPY STRUCTURE()
    • DBAPPEND()
    • DBCLEARALLFILTER()
    • DBCLEARFILTER()
    • DBCLEARINDEX()........................................................................................................................
    • DBCLOSEALL()
    • DBCLOSEAREA()
    • DBCOMMIT()
    • DBCOMMITALL()
    • DBCREATE()...............................................................................................................................
    • DBCREATEINDEX()......................................................................................................................
    • DBDELETE()
    • DBF()
    • DBFIELDINFO()
    • DBFILTER()
    • DBGOTO()
    • DBGOTOP()................................................................................................................................
    • DBGOBOTTON()..........................................................................................................................
    • DBINFO()...................................................................................................................................
    • DBNICKINDEXKEY()
    • DBORDERINFO().........................................................................................................................
    • DBORDERNICKNAME().................................................................................................................
    • DBPACK()
    • DBRECALL()
    • DBRECORDINFO().......................................................................................................................
    • DBREINDEX()
    • DBRLOCK()
    • DBRLOCKLIST()..........................................................................................................................
    • DBRUNLOCK()
    • DBSETDRIVER()
    • DBSETINDEX()
    • DBSETNICKNAME()
    • DBSELECTAREA()........................................................................................................................
    • DBSETORDER()
    • DBSEEK() E MSSEEK().................................................................................................................
    • DBSKIP()
    • DBSETFILTER()...........................................................................................................................
    • DBSTRUCT()
    • DBUNLOCK()
    • DBUNLOCKALL() - 8 -
    • DBUSEAREA()
    • DELETED()
    • FCOUNT()
    • FOUND()....................................................................................................................................
    • INDEXKEY()
    • INDEXORD()
    • LUPDATE()
    • MSAPPEND()
    • MSUNLOCK()..............................................................................................................................
    • ORDBAGEXT()
    • ORDKEY()
    • RECLOCK()
    • RECNO()....................................................................................................................................
    • SELECT()
    • SET FILTER TO
    • SOFTLOCK()...............................................................................................................................
    • USED()
    • ZAP...........................................................................................................................................
  • Controle de numeração seqüencial
    • GETSXENUM()
    • CONFIRMSXE()
    • ROLLBACKSXE()
  • Validação.............................................................................................................................................
    • ALLWAYSFALSE()........................................................................................................................
    • ALLWAYSTRUE()
    • EXISTCHAV()
    • EXISTCPO()
    • LETTERORNUM().........................................................................................................................
    • NAOVAZIO()
    • NEGATIVO()...............................................................................................................................
    • PERTENCE()
    • POSITIVO()................................................................................................................................
    • TEXTO()
    • VAZIO().....................................................................................................................................
  • Manipulação de parâmetros do sistema...............................................................................................
    • GETMV()....................................................................................................................................
    • GETNEWPAR()
    • PUTMV()
    • SUPERGETMV()...........................................................................................................................
  • Controle de impressão.........................................................................................................................
    • AVALIMP()
    • CABEC()
    • IMPCADAST()
    • MS_FLUSH()...............................................................................................................................
    • OURSPOOL()
    • RODA()......................................................................................................................................
    • SETDEFAULT()............................................................................................................................
    • SETPRC()...................................................................................................................................
    • SETPRINT()................................................................................................................................
  • Controle de processamentos
    • ABREEXCL()
    • CLOSEOPEN().............................................................................................................................
    • CLOSESFILE()
    • CHKFILE()..................................................................................................................................
    • CONOUT()..................................................................................................................................
    • CRIAVAR()
    • DISARMTRANSACTION()..............................................................................................................
    • EXECBLOCK()
    • EXISTBLOCK()............................................................................................................................
    • ERRORBLOCK()
    • FINAL()
    • FINDFUNCTION()
    • FUNDESC()
    • FUNNAME()
    • GETAREA().................................................................................................................................
    • GETCOUNTRYLIST()
    • ISINCALLSTACK() - 9 -
    • REGTOMEMORY()........................................................................................................................
    • RESTAREA()
    • USEREXCEPTION()
  • Utilização de recursos do ambiente ERP
    • AJUSTASX1()
    • ALLUSERS()
    • ALLGROUPS()
    • CGC()........................................................................................................................................
    • CONPAD1()
    • DATAVALIDA()............................................................................................................................
    • EXISTINI()
    • EXTENSO()
    • FORMULA()
    • GETADVFVAL()
    • HELP().......................................................................................................................................
    • MESEXTENSO()
    • OBRIGATORIO()
    • OPENFILE()
    • PERGUNTE()...............................................................................................................................
    • PESQPICT()................................................................................................................................
    • PESQPICTQT()............................................................................................................................
    • POSICIONE()..............................................................................................................................
    • PUTSX1()...................................................................................................................................
    • RETINDEX()
    • SIXDESCRICAO()
    • TABELA()
    • TAMSX3()
    • TM()..........................................................................................................................................
    • X1DEF01()
    • X1PERGUNT().............................................................................................................................
    • X2NOME()..................................................................................................................................
    • X3CBOX()
    • X3DESCRIC()
    • X3PICTURE()..............................................................................................................................
    • X3TITULO()................................................................................................................................
    • X3USO()
    • X5DESCRI()
    • X6CONTEUD()
    • X6DESCRIC()
    • XADESCRIC()
    • XBDESCRI()
    • XFILIAL()
  • Interfaces de cadastro
    • AXCADASTRO()
    • AXPESQUI()
    • AXVISUAL()
    • AXINCLUI()
    • AXALTERA()
    • AXDELETA()
    • BRWLEGENDA()..........................................................................................................................
    • ENDFILBRW()
    • FILBROWSE()
    • PESQBRW()................................................................................................................................
    • MARKBROW()
    • MBROWSE()
    • MODELO2()................................................................................................................................
    • MODELO3()................................................................................................................................
  • Interfaces visuais para aplicações.......................................................................................................
    • ALERT()
    • AVISO().....................................................................................................................................
    • FORMBACTH()
    • MSGFUNCTIONS().......................................................................................................................
  • Recursos das interfaces visuais...........................................................................................................
    • GDFIELDGET()............................................................................................................................
    • GDFIELDPOS()
    • GDFIELDPUT()............................................................................................................................
  • GETMARK() - 10 -
  • ISMARK()...................................................................................................................................
  • MARKBREFRESH().......................................................................................................................
  • READVAR()
  • THISINV()..................................................................................................................................
  • THISMARK()...............................................................................................................................
  • 11 -

OBJETIVOS DO CURSO

Objetivos específicos do curso:

Ao final do curso o treinando deverá ter desenvolvido os seguintes conceitos, habilidades e atitudes:

a) Conceitos a serem aprendidos

 estruturas para implementação aplicações orientadas a objetos  introdução as técnicas de programação de desenvolvimento de relatórios gráficos  introdução aos conceitos de ADVPL ASP e WebServices

b) Habilidades e técnicas a serem aprendidas

 desenvolvimento de aplicações voltadas ao ERP Protheus  análise de fontes de média complexidade  desenvolvimento de com orientação a objetos

c) Atitudes a serem desenvolvidas

 adquirir conhecimentos através da análise dos funcionalidades disponíveis no ERP Protheus;  estudar a implementação de fontes com estruturas orientadas a objetos em ADVPL;  embasar a realização de outros cursos relativos a linguagem ADVPL

  • 13 -

Classe

Objetos com a mesma estrutura e o mesmo comportamento são agrupados em classes. Uma classe é uma abstração que descreve propriedades importantes para uma aplicação e simplesmente ignora o resto.

Cada classe descreve um conjunto (possivelmente infinito) de objetos individuais. Cada objeto é dito ser uma instância de uma classe. Assim, cada instância de uma classe tem seus próprios valores para cada atributo, mas dividem os nomes dos atributos e métodos com as outras instâncias da classe. Implicitamente, cada objeto contém uma referência para sua própria classe, em outras palavras, ele sabe o que ele é.

Figura: Representação de uma classe de objetos

Figura: Representação de um objeto instanciado de uma classe

  • 14 -

Polimorfismo

Polimorfismo significa que a mesma operação pode se comportar de forma diferente em classes diferentes. Por exemplo, a operação move quando aplicada a uma janela de um sistema de interfaces tem um comportamento distinto do que quando aplicada a uma peça de um jogo de xadrez. Um método é uma implementação específica de uma operação para uma certa classe.

Polimorfismo também implica que uma operação de uma mesma classe pode ser implementada por mais de um método. O usuário não precisa saber quantas implementações existem para uma operação, ou explicitar qual método deve ser utilizado: a linguagem de programação deve ser capaz de selecionar o método correto a partir do nome da operação, classe do objeto e argumentos para a operação. Desta forma, novas classes podem ser adicionadas sem necessidade de modificação de código já existente, pois cada classe apenas define os seus métodos e atributos.

No mundo real, alguns objetos e classes podem ser descritos como casos especiais, ou especializações, de outros objetos e classes. Por exemplo, a classe de computadores pessoais com processador da linha 80x86 é uma especialização de computadores pessoais, que por sua vez é uma especialização de computadores. Não é desejável que tudo que já foi descrito para computadores tenha de ser repetido para computadores pessoais ou para computadores pessoais com processador da linha 80x86.

Herança

Herança é o mecanismo do paradigma de orientação a objetos que permite compartilhar atributos e operações entre classes baseada em um relacionamento hierárquico. Uma classe pode ser definida de forma genérica e depois refinada sucessivamente em termos de subclasses ou classes derivadas. Cada subclasse incorpora, or herda, todas as propriedades de sua superclasse (ou classe base) e adiciona suas propriedades únicas e particulares. As propriedades da classe base não precisam ser repetidas em cada classe derivada. Esta capacidade de fatorar as propriedades comuns de diversas classes em uma superclasse pode reduzir dramaticamente a repetição de código em um projeto ou programa, sendo uma das principais vantagens da abordagem de orientação a objetos.

  • 16 -

O desenvolvimento orientado a objetos não apenas permite que a informação dentro de um projeto seja compartilhada como também oferece a possibilidade de reaproveitar projetos e código em projetos futuros. As ferramentas para alcançar este compartilhamento, tais como abstração, Encapsulamento e herança, estão presentes na metodologia; uma estratégia de reuso entre projetos é a definição de bibliotecas de elementos reusáveis. Entretanto, orientação a objetos não é uma fórmula mágica para alcançar reusabilidade; para tanto, é preciso planejamento e disciplina para pensar em termos genéricos, não voltados simplesmente para a aplicação corrente.

1.3. O Modelo de Objetos (OMT)

Um modelo de objetos busca capturar a estrutura estática de um sistema mostrando os objetos existentes, seus relacionamentos, e atributos e operações que caracterizam cada classe de objetos. É através do uso deste modelo que se enfatiza o desenvolvimento em termos de objetos ao invés de mecanismos tradicionais de desenvolvimento baseado em funcionalidades, permitindo uma representação mais próxima do mundo real.

Uma vez que as principais definições e conceitos da abordagem de orientação a objetos estão definidos, é possível introduzir o modelo de objetos que será adotado ao longo deste texto. O modelo apresentado é um subconjunto do modelo OMT (Object Modeling Technique), proposto por Rumbaugh entre outros. Este modelo também introduz uma representação diagramática para este modelo, a qual será também apresentada aqui.

1.3.1. Objetos e Classes

Objeto é definido neste modelo como um conceito, abstração ou coisa com limites e significados bem definidos para a aplicação em questão. Objetos têm dois propósitos: promover o entendimento do mundo real e suportar uma base prática para uma implementação computacional. Não existe uma maneira “correta” de decompor um problema em objetos; esta decomposição depende do julgamento do projetista e da natureza do problema. Todos os objetos têm identidade própria e são distinguíveis.

Uma classe de objetos descreve um grupo de objetos com propriedades (atributos) similares, comportamentos (operações) similares, relacionamentos comuns com outros objetos e uma semântica comum. Por exemplo, Pessoa e Companhia são classes de objetos. Cada pessoa tem um nome e uma idade; estes seriam os atributos comuns da classe. Companhias também podem ter os mesmos atributos nome e idade definidos. Entretanto, devido à distinção semântica elas provavelmente estariam agrupados em outra classe que não Pessoa. Como se pode observar, o agrupamento em classes não leva em conta apenas o compartilhamento de propriedades.

Todo objeto sabe a que classe ele pertence, ou seja, a classe de um objeto é um atributo implícito do objeto. Este conceito é suportado na maior parte das linguagens de programação orientada a objetos, inclusive em ADVPL.

OMT define dois tipos de diagramas de objetos, diagramas de classes e diagramas de instâncias. Um diagrama de classe é um esquema, ou seja, um padrão ou gabarito que descreve as muitas possíveis instâncias de dados. Um diagrama de instâncias descreve como um conjunto particular de objetos está relacionado. Diagramas de instâncias são úteis para apresentar exemplos e documentar casos de testes; diagramas de classes têm uso mais amplos. A Figura abaixo apresenta a notação adotada para estes diagramas.

  • 17 -

Figura: Representação diagramática de OMT para classes e objetos

O agrupamento de objetos em classes é um poderoso mecanismo de abstração. Desta forma, é possível generalizar definições comuns para uma classe de objetos, ao invés de repetí-las para cada objeto em particular. Esta é uma das formas de reutilização e economia que a abordagem de orientação a objetos suporta.

1.3.2. Atributos

Um atributo é um valor de dado assumido pelos objetos de uma classe. Nome, idade e peso são exemplos de atributos de objetos Pessoa. Cor, peso e modelo são possíveis atributos de objetos Carro. Cada atributo tem um valor para cada instância de objeto. Por exemplo, o atributo idade tem valor ``29'' no objeto Pedro Y. Em outras palavras, Pedro Y tem 29 anos de idade. Diferentes instâncias de objetos podem ter o mesmo valor para um dado atributo. Cada nome de atributo é único para uma dada classe, mas não necessariamente único entre todas as classes. Por exemplo, ambos Pessoa e Companhia podem ter um atributo chamado endereço.

No diagrama de classes, atributos são listados no segundo segmento da caixa que representa a classe. O nome do atributo pode ser seguido por detalhes opcionais, tais como o tipo de dado assumido e valor default. A Figura abaixo mostra esta representação.

Figura: Representação diagramática de OMT para classes e objetos com atributos

Não se deve confundir identificadores internos de objetos com atributos do mundo real. Identificadores de objetos são uma conveniência de implementação, e não têm nenhum significado para o domínio da aplicação. Por exemplo, CIC e RG não são identificadores de objetos, mas sim verdadeiros atributos do mundo real.

  • 19 -

1.3.4. Sugestões de desenvolvimento

Na construção de um modelo para uma aplicação, as seguintes sugestões devem ser observadas a fim de se obter resultados claros e consistentes:

 Não comece a construir um modelo de objetos simplesmente definindo classes, associações e heranças. A primeira coisa a se fazer é entender o problema a ser resolvido.

 Tente manter seu modelo simples. Evite complicações desnecessárias.

 Escolha nomes cuidadosamente. Nomes são importantes e carregam conotações poderosas. Nomes devem ser descritivos, claros e não deixar ambigüidades. A escolha de bons nomes é um dos aspectos mais difíceis da modelagem.

 Não “enterre” apontadores ou outras referências a objetos dentro de objetos como atributos. Ao invés disto, modele estas referências como associações. Isto torna o modelo mais claro e independente da implementação.

 Tente evitar associações que envolvam três ou mais classes de objetos. Muitas vezes, estes tipos de associações podem ser decompostos em termos de associações binárias, tornando o modelo mais claro.

 Não transfira os atributos de ligação para dentro de uma das classes.

 Tente evitar hierarquias de generalização muito profundas.

 Não se surpreenda se o seu modelo necessitar várias revisões; isto é o normal.

 Sempre documente seus modelos de objetos. O diagrama pode especificar a estrutura do modelo, mas nem sempre é suficiente para descrever as razões por trás da definição do modelo. Uma explicação escrita pode clarificar pontos tais como significado de nomes e explicar a razão para cada classe e relacionamento.

 Nem sempre todas as construções OMT são necessárias para descrever uma aplicação. Use apenas aquelas que forem adequadas para o problema analisado.

  • 20 -

2. Orientação a objetos em ADVPL

Neste tópico será detalhada a forma com a qual a linguagem ADVPL implementa os conceitos de orientação a objetos e a sintaxe utilizada no desenvolvimento de aplicações.

2.1. Sintaxe e operadores para orientação a objetos

Palavras reservadas

 CLASS

 CLASSDATA

 CONSTRUCTOR

 DATA

 ENDCLASS

 EXPORT

 FROM

 HIDDEN

 METHOD

 PROTECTED

 SELF

CLASS

Descrição

Utilizada na declaração de uma classe de objetos para identificar a qual classe um determinado método está relacionado. Sintaxe 1 CLASS <nome_da_classe>

Sintaxe 2 METHOD <nome_do_método> CLASS <nome_da_classe>

CLASSDATA

Descrição

Utilizada na declaração de um atributo da classe de objetos com a finalidade de definir um tipo e um conteúdo padrão para este atributo. Sintaxe 1 CLASSDATA <nome_da_variável> AS INIT <conteúdo>

CONSTRUCTOR

Descrição

Utilizada na especificação de um método especial, definido como construtor, o qual tem a função de retornar um novo objeto com os atributos e métodos definidos na classe. Sintaxe METHOD <nome_do_método()> CONSTRUCTOR