Menu English Ukrainian Russo Início

Biblioteca técnica gratuita para amadores e profissionais Biblioteca técnica gratuita


Информатика и информационные технологии. Совместимость типов объектов (конспект лекций)

Notas de aula, folhas de dicas

Diretório / Notas de aula, folhas de dicas

Comentários do artigo Comentários do artigo

Índice (expandir)

AULA #11. Tipo de dados do objeto

1. Tipo de objeto em Pascal. O conceito de um objeto, sua descrição e uso

Historicamente, a primeira abordagem à programação tem sido a programação procedural, também conhecida como programação bottom-up. Inicialmente, foram criadas bibliotecas comuns de programas padrão usados ​​em vários campos de aplicação computacional. Então, com base nesses programas, foram criados programas mais complexos para resolver problemas específicos.

No entanto, a tecnologia computacional estava em constante desenvolvimento, começou a ser usada para resolver vários problemas de produção, economia e, portanto, tornou-se necessário processar dados de vários formatos e resolver problemas não padronizados (por exemplo, não numéricos). Portanto, ao desenvolver linguagens de programação, eles começaram a prestar atenção à criação de vários tipos de dados. Isso contribuiu para o surgimento de tipos de dados complexos como combinados, múltiplos, string, arquivo, etc. Antes de resolver o problema, o programador realizou a decomposição, ou seja, dividiu a tarefa em várias subtarefas, para cada uma das quais foi escrito um módulo separado . A principal tecnologia de programação incluiu três etapas:

1) projeto de cima para baixo;

2) programação modular;

3) codificação estrutural.

Mas a partir de meados dos anos 60 do século XX, novos conceitos e abordagens começaram a se formar, que formaram a base da tecnologia de programação orientada a objetos. Nesta abordagem, a modelagem e descrição do mundo real é realizada no nível de conceitos de uma área temática específica à qual o problema a ser resolvido pertence.

A programação orientada a objetos é uma técnica de programação que se assemelha muito ao nosso comportamento. É uma evolução natural de inovações anteriores no design de linguagem de programação. A programação orientada a objetos é mais estrutural do que todos os desenvolvimentos anteriores em relação à programação estruturada. Também é mais modular e mais abstrato do que as tentativas anteriores de abstração de dados e detalhes de programação internamente. Uma linguagem de programação orientada a objetos é caracterizada por três propriedades principais:

1) Encapsulamento. A combinação de registros com procedimentos e funções que manipulam os campos desses registros forma um novo tipo de dado - um objeto;

2) Herança. Definição de um objeto e seu uso posterior para construir uma hierarquia de objetos filho com a capacidade de cada objeto filho relacionado à hierarquia acessar o código e os dados de todos os objetos pai;

3) Polimorfismo. Dando a uma ação um único nome, que é então compartilhado para cima e para baixo na hierarquia de objetos, com cada objeto na hierarquia executando essa ação de uma forma adequada.

Falando do objeto, apresentamos um novo tipo de dado - o objeto. Um tipo de objeto é uma estrutura que consiste em um número fixo de componentes. Cada componente é um campo contendo dados de um tipo estritamente definido ou um método que executa operações em um objeto. Por analogia com a declaração de variáveis, a declaração de um campo especifica o tipo de dado desse campo e o identificador que nomeia o campo: por analogia com a declaração de um procedimento ou função, a declaração de um método especifica o título de um procedimento, função, construtor ou destruidor.

Um tipo de objeto pode herdar componentes de outro tipo de objeto. Se o tipo T2 herdar do tipo T1, o tipo T2 será filho do tipo T1 e o próprio tipo T1 será pai do tipo T2. A herança é transitiva, ou seja, se TK herda de T2 e T2 herda de T1, então TK herda de T1. O escopo (domínio) de um tipo de objeto consiste em si mesmo e em todos os seus descendentes.

O código-fonte a seguir é um exemplo de uma declaração de tipo de objeto, tipo

tipo

ponto = objeto

X, Y: inteiro;

end;

Rect = objeto

A, B: Ponto T;

procedimento Init(XA, YA, XB, YB: Inteiro);

procedimento Copiar(var R: TRectangle);

procedimento Move(DX, DY: Inteiro);

procedimento Grow(DX, DY: Inteiro);

procedimento Intersect(var R: TRectangle);

procedimento União(var R: TRectangle);

função Contém(P: Ponto): Booleano;

end;

StringPtr = ^String;

CampoPtr = ^TField;

TField = objeto

X, Y, Len: inteiro;

Nome: StringPtr;

construtor Copiar(var F: TField);

construtor Init(FX, FY, FLen: Integer; FName: String);

destruidor Feito; virtual;

procedimento de exibição; virtual;

procedimento Editar; virtual;

função GetStr: String; virtual;

função PutStr(S: String): Booleano; virtual;

end;

StrFieldPtr = ^TStrCampo;

StrField = objeto(TField)

Valor: PString;

construtor Init(FX, FY, FLen: Integer; FName: String);

destruidor Feito; virtual;

função GetStr: String; virtual;

função PutStr(S: String): Booleano;

virtual;

função Get:string;

procedimento Put(S: String);

end;

NumFieldPtr = ^TNumField;

TNumField = objeto(TField)

privado

Valor, Min, Max: Longint;

público

construtor Init(FX, FY, FLen: Integer; FName: String;

FMin, FMax: Inteiro longo);

função GetStr: String; virtual;

função PutStr(S: String): Booleano; virtual;

função Get: Longint;

função Put(N: Longint);

end;

ZipFieldPtr = ^TZipField;

ZipField = objeto(TNumField)

função GetStr: String; virtual;

função PutStr(S: String): Booleano;

virtual;

final.

Ao contrário de outros tipos, os tipos de objeto só podem ser declarados na seção de declaração de tipo no nível mais externo do escopo de um programa ou módulo. Assim, os tipos de objeto não podem ser declarados em uma seção de declaração de variável ou dentro de um bloco de procedimento, função ou método.

Um tipo de componente de tipo de arquivo não pode ter um tipo de objeto ou qualquer tipo de estrutura contendo componentes de tipo de objeto.

2. Herança

O processo pelo qual um tipo herda as características de outro tipo é chamado de herança. O descendente é chamado de tipo derivado (filho) e o tipo do qual o tipo filho herda é chamado de tipo pai (pai).

Os tipos de registro Pascal conhecidos anteriormente não podem herdar. No entanto, o Borland Pascal estende a linguagem Pascal para suportar herança. Uma dessas extensões é uma nova categoria de estrutura de dados relacionada a registros, mas muito mais poderosa. Os tipos de dados nesta nova categoria são definidos usando a nova palavra reservada "objeto". Um tipo de objeto pode ser definido como um tipo completo e independente na maneira de descrever entradas em Pascal, mas também pode ser definido como um descendente de um tipo de objeto existente colocando o tipo pai entre parênteses após a palavra reservada "objeto".

3. Instanciar Objetos

Uma instância de um objeto é criada declarando uma variável ou constante de um tipo de objeto, ou aplicando o procedimento padrão New a uma variável do tipo "ponteiro para tipo de objeto". O objeto resultante é chamado de instância do tipo de objeto;

var

F: Tcampo;

Z: TZipField;

FP: PFcampo;

ZP: PZipField;

Dadas essas declarações de variáveis, F é uma instância de TField e Z é uma instância de TZipField. Da mesma forma, após aplicar New a FP e ZP, FP apontará para uma instância TField e ZP apontará para uma instância TZipField.

Se um tipo de objeto contém métodos virtuais, as instâncias desse tipo de objeto devem ser inicializadas chamando um construtor antes de chamar qualquer método virtual.

Abaixo segue um exemplo:

var

S: StrField;

por exemplo

S.Init(1, 1, 25, 'Primeiro nome');

S.Put('Vladimir');

S.Exibir;

...

S Feito;

final.

Se S.Init não foi chamado, chamar S.Display fará com que este exemplo falhe.

A atribuição de uma instância de um tipo de objeto não implica a inicialização da instância. Um objeto é inicializado pelo código gerado pelo compilador que é executado entre a invocação do construtor e o ponto em que a execução realmente atinge a primeira instrução no bloco de código do construtor.

Se a instância do objeto não for inicializada e a verificação de intervalo estiver habilitada (pela diretiva {SR+}), a primeira chamada para o método virtual da instância do objeto apresentará um erro em tempo de execução. Se a verificação de intervalo estiver desabilitada (pela diretiva {SR-}), a primeira chamada para um método virtual de um objeto não inicializado pode levar a um comportamento imprevisível.

A regra de inicialização obrigatória também se aplica a instâncias que são componentes de tipos struct. Por exemplo:

var

Comentário: array [1..5] de TStrField;

I: inteiro

começar

para I := 1 a 5 faça

Comentário [I].Init (1, I + 10, 40, 'first_name');

.

.

.

for I := 1 a 5 do Comentário [I].Done;

end;

Para instâncias dinâmicas, a inicialização geralmente é sobre o posicionamento e a limpeza é sobre a exclusão, que é obtida por meio da sintaxe estendida dos procedimentos padrão Novo e Descartar. Por exemplo:

var

SP: StrFieldPtr;

começar

New(SP, Init(1, 1, 25, 'nome_nome');

SP^.Put('Vladimir');

SP^.Exibir;

.

.

.

Descarte (SP, Feito);

final.

Um ponteiro para um tipo de objeto é uma atribuição compatível com um ponteiro para qualquer tipo de objeto pai, portanto, em tempo de execução, um ponteiro para um tipo de objeto pode apontar para uma instância desse tipo ou para uma instância de qualquer tipo filho.

Por exemplo, um ponteiro do tipo ZipFieldPtr pode ser atribuído a ponteiros do tipo PZipField, PNumField e PField e, em tempo de execução, um ponteiro do tipo PField pode ser nil ou apontar para uma instância de TField, TNumField ou TZipField, ou qualquer instância de um tipo filho de TField.

Essas regras de compatibilidade de ponteiro de atribuição também se aplicam a parâmetros de tipo de objeto. Por exemplo, o método TField.Cop pode receber instâncias de TField, TStrField, TNumField, TZipField ou qualquer outro tipo filho de TField.

4. Componentes e Escopo

O escopo de um identificador de bean vai além do tipo de objeto. Além disso, o escopo de um identificador de bean se estende pelos blocos de procedimentos, funções, construtores e destruidores que implementam os métodos do tipo de objeto e seus descendentes. Com base nessas considerações, a grafia do identificador do componente deve ser exclusiva no tipo de objeto e em todos os seus descendentes, bem como em todos os seus métodos.

O escopo do identificador de componente descrito na parte privada da declaração de tipo é limitado ao módulo (programa) que contém a declaração de tipo de objeto. Em outras palavras, os beans identificadores privados agem como identificadores públicos comuns dentro do módulo que contém a declaração do tipo de objeto, e fora do módulo quaisquer beans e identificadores privados são desconhecidos e inacessíveis. Ao colocar tipos de objetos relacionados no mesmo módulo, você pode ter certeza de que esses objetos podem acessar os componentes privados uns dos outros, e esses componentes privados serão desconhecidos para outros módulos.

Em uma declaração de tipo de objeto, um cabeçalho de método pode especificar os parâmetros do tipo de objeto que está sendo descrito, mesmo que a descrição ainda não esteja completa.

Autor: Tsvetkova A.V.

<< Voltar: Tipo de dados do objeto (Tipo de objeto em Pascal. O conceito de objeto, sua descrição e uso. Herança. Criação de instâncias de objetos. Componentes e escopo)

>> Encaminhar: Compatibilidade do tipo de objeto (Encapsulamento. Objetos extensíveis. Compatibilidade de tipo de objeto)

Recomendamos artigos interessantes seção Notas de aula, folhas de dicas:

Imunologia geral e clínica. Notas de aula

Teoria do controle. Berço

Lei civil. Parte II. Berço

Veja outros artigos seção Notas de aula, folhas de dicas.

Leia e escreva útil comentários sobre este artigo.

<< Voltar

Últimas notícias de ciência e tecnologia, nova eletrônica:

A existência de uma regra de entropia para o emaranhamento quântico foi comprovada 09.05.2024

A mecânica quântica continua a nos surpreender com seus fenômenos misteriosos e descobertas inesperadas. Recentemente, Bartosz Regula do Centro RIKEN de Computação Quântica e Ludovico Lamy da Universidade de Amsterdã apresentaram uma nova descoberta que diz respeito ao emaranhamento quântico e sua relação com a entropia. O emaranhamento quântico desempenha um papel importante na moderna ciência e tecnologia da informação quântica. No entanto, a complexidade da sua estrutura torna a sua compreensão e gestão um desafio. A descoberta de Regulus e Lamy mostra que o emaranhamento quântico segue uma regra de entropia semelhante à dos sistemas clássicos. Esta descoberta abre novas perspectivas na ciência e tecnologia da informação quântica, aprofundando a nossa compreensão do emaranhamento quântico e a sua ligação à termodinâmica. Os resultados do estudo indicam a possibilidade de reversibilidade das transformações de emaranhamento, o que poderia simplificar muito seu uso em diversas tecnologias quânticas. Abrindo uma nova regra ... >>

Mini ar condicionado Sony Reon Pocket 5 09.05.2024

O verão é uma época de relaxamento e viagens, mas muitas vezes o calor pode transformar essa época em um tormento insuportável. Conheça um novo produto da Sony – o minicondicionador Reon Pocket 5, que promete deixar o verão mais confortável para seus usuários. A Sony lançou um dispositivo exclusivo - o minicondicionador Reon Pocket 5, que fornece resfriamento corporal em dias quentes. Com ele, os usuários podem desfrutar do frescor a qualquer hora e em qualquer lugar, simplesmente usando-o no pescoço. Este miniar condicionado está equipado com ajuste automático dos modos de operação, além de sensores de temperatura e umidade. Graças a tecnologias inovadoras, o Reon Pocket 5 ajusta o seu funcionamento em função da atividade do utilizador e das condições ambientais. Os usuários podem ajustar facilmente a temperatura usando um aplicativo móvel dedicado conectado via Bluetooth. Além disso, camisetas e shorts especialmente desenhados estão disponíveis para maior comodidade, aos quais um mini ar condicionado pode ser acoplado. O dispositivo pode, oh ... >>

Energia do espaço para Starship 08.05.2024

A produção de energia solar no espaço está se tornando mais viável com o advento de novas tecnologias e o desenvolvimento de programas espaciais. O chefe da startup Virtus Solis compartilhou sua visão de usar a Starship da SpaceX para criar usinas orbitais capazes de abastecer a Terra. A startup Virtus Solis revelou um ambicioso projeto para criar usinas de energia orbitais usando a Starship da SpaceX. Esta ideia poderia mudar significativamente o campo da produção de energia solar, tornando-a mais acessível e barata. O cerne do plano da startup é reduzir o custo de lançamento de satélites ao espaço usando a Starship. Espera-se que este avanço tecnológico torne a produção de energia solar no espaço mais competitiva com as fontes de energia tradicionais. A Virtual Solis planeja construir grandes painéis fotovoltaicos em órbita, usando a Starship para entregar os equipamentos necessários. Contudo, um dos principais desafios ... >>

Notícias aleatórias do Arquivo

Microcontrolador AT90SC12872RCFT para dispositivos de identificação pessoal 17.04.2004

A ATMEL Corporation introduziu um novo microcontrolador AT90SC12872RCFT especificamente para o mercado de identificação pessoal.

O microcontrolador possui 72 Kbytes de memória não volátil para armazenamento de dados de identificação, bem como 128 Kbytes de memória permanente para armazenamento de programas. O microcontrolador possui duas interfaces de contato e uma sem contato. Existem recursos de segurança que impedem que os dados sejam substituídos.

Outras notícias interessantes:

▪ forno inflável

▪ Nanopartículas controlam a imunidade

▪ A capacidade dos discos ópticos aumentará drasticamente

▪ Blu-rays de camada dupla agora disponíveis

▪ RackStation RS3617xs NAS

Feed de notícias de ciência e tecnologia, nova eletrônica

 

Materiais interessantes da Biblioteca Técnica Gratuita:

▪ seção do site Consumer Electronics. Seleção de artigos

▪ artigo Espessante caseiro. Dicas para o dono da casa

▪ artigo Como você encontrou o localizador em morcegos? Resposta detalhada

▪ artigo de Sabadilla. Lendas, cultivo, métodos de aplicação

▪ artigo Acústica frontal: pódios. Enciclopédia de rádio eletrônica e engenharia elétrica

▪ artigo Ratinho com parentes grandes. experimento físico

Deixe seu comentário neste artigo:

Имя:


E-mail opcional):


Comentário:





Todos os idiomas desta página

Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site

www.diagrama.com.ua

www.diagrama.com.ua
2000-2024