Streams (cont)

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:22

0

¢As Streams podem suportar a busca.
A busca é a consulta e modificação de uma posição actual no interior da stream.
A capacidade de busca depende da stream.
¢O StreamReader  e StreamReader são duas classes para de manipular ficheiros de texto.
¢Veremos de seguida um exemplo.

Imports System
Imports System.IO
Module module1
    Public Sub Main()
        Try
            escrever()
            ' Criar uma intância de uma streamreader para ler dum ficheiro.
            Dim sr As StreamReader = New StreamReader("testfile.txt")
            Dim line As String
            'ler e escrever as linhas do ficheiro até ao fim deste
            Do
                line = sr.ReadLine()
                Console.WriteLine(line)
            Loop Until line Is Nothing
            sr.Close()
Catch E As Exception
            ' mostrar ao utilizador o que correu mal
            Console.WriteLine("The file could not be read:")
            Console.WriteLine(E.Message)
            Console.ReadKey()
        End Try
Public Sub escrever()
        ' Cria uma instância de uma StreamWriter para escrever num ficheiro
        Dim sw As StreamWriter = New StreamWriter("testfile.txt")
        ' Inclui algum texto
        sw.Write("Este é um teste")
        sw.WriteLine("-------------------")
        ' Outros objectos podem ser escritos no ficheiro
        sw.Write("Data : ")
        sw.WriteLine(DateTime.Now)
        sw.Close()
    End Sub
        Console.ReadKey()
    End Sub


Streams

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:21

0

¢Definição
Uma stream pode ser considerado um  fluxo sequêncial de bytes com um arquivo, um dispositivo de entrada/saida, um processo de comunicação entre dois pontos ou um socket TCP/IP.
¢Usar Streams envolve as seguintes operações fundamentais:
¢Ler a partir de streams. A leitura é a transferência de dados de uma stream numa estrutura de dados como um array de bytes;
¢Escrever para streams. A escrita é a transferência de dados a partir de uma estrutura de dados para uma stream;

Streams

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:20

0

¢ O conceito de stream permite-nos abstrair-nos dos detalhes da estrutura de dados subjacente e utilizar um conjunto de métodos comum a vários tipos de streams.
¢ Uma stream encapsula uma sequência de dados, frequentemente bytes.
¢ Uma stream possui uma fonte e um destino.
¢ Se um trecho de código escreve numa stream, ele é a fonte deste.
¢ Se um trecho de código de um stream, ele é o destino deste.
¢

EXCEPÇÕES (cont)

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:20

0

¢No Visual Basic .NET nós podemos criar as nossas próprias excepções.
¢Para isso apenas temos de criar classes que derivem da classe Exception

' Definir a classe que vai tratar o erro específico
Public Class MyParameterOutOfRangeException
Inherits Exception
Public Sub New( )
MyBase.New(“O valor passado em  MyParameter " _
& " está for a de limite. O valor deverá estar entre
& " 10 e 100.")
End Sub
End Class
' ...

' Definição do método que possa disparar a nossa excepção
Public Sub SomeMethod(ByVal MyParameter As Integer)
' Assegurar que o argumento é válido.
If (MyParameter < 10) Or (MyParameter > 100) Then
Throw New MyParameterOutOfRangeException( )
End If
' Corpo do método
' ...
End Sub
Public Sub SomeCaller( )
 Try
SomeMethod(500)
Catch e As MyParameterOutOfRangeException
' ...
 End Try
End Sub

EXCEPÇÕES (cont)

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:19

0

¢O Visual Basic .NET pode intencionalmente tratar de excepções para indicar erros ou ocorrências invulgares.
¢Vejamos um exemplo em que existe um método que recebe valores nos argumentos,  mas estes têm certos limites.
¢Este controlo é feito com a palavra throw.

Public Sub SomeMethod(ByVal MyParameter As Integer)
' Temos de assegurar que o argumento é válido.
If (MyParameter < 10) Or (MyParameter > 100) Then
Throw New ArgumentOutOfRangeException( )
End If
' Corpo do método
' ...
End Sub

EXCEPÇÕES (cont)

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:15

0

Dim s As System.IO.Stream =_
System.IO.File.Open("c:\test.txt", System.IO.FileMode.CreateNew)
Try
' Fazemos alguma coisa com o ficheiro.
' ...
Catch e As Exception
' Handle any exceptions.
' ...
Finally
‘A stream deverá ser fechada havendo ou não excepção
s.Close( )
End Try

EXCEPÇÕES (cont)

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:14

0

¢Por vezes temos de garantir que certa parte do código é executado mesmo que tenha ocorrido uma excepção de forma a não comprometer a nossa aplicação.
¢Por exemplo se um ficheiro for aberto, este tem se ser fechado mesmo que ocorra uma excepção.
¢O bloco Try contém o bloco Finally para este propósito.
¢Este bloco de código é sempre executado haja ou não um excepção.

EXCEPÇÕES (cont)

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:14

0

¢Quando ocorre uma excepção não é fácil retomar a execução do bloco de código que gerou a excepção, se isso for uma coisa importante, a solução é marcar o código de alguma maneira e fazer com que este volte a ser executado.
¢ Em seguida apresenta-se um exemplo:

Dim bSuccess As Boolean = False
Do
Try
' Some code that is to be protected.
' ...
bSuccess = True
Catch e As Exception
' Some recovery action.
' ...
End Try
Loop Until bSuccess

EXCEPÇÕES (cont)

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:13

0

¢Pelo facto de todas as exepções derivarem do tipo Exception, as propriedades (atributos) e métodos estão acessíveis em todos os tipos de excepção.
¢De facto a maioria dos tipos de excepções não definem novos métodos.
¢As propriedades mais importantes das excepções são:
¢
HelpLink
¢É o URL que liga a um ficheiro de ajuda que explica o erro em detalhe. O tipo de dados é uma string.

Message
¢É a mensagem associada à excepção. Geralmente é uma explicação da causa que gerou a excepção.
¢O tipo é String
¢
Source
¢O nome da aplicação ou objecto onde a excepção ocorreu
¢O tipo é String
¢
StackTrace
¢É uma representação textual da lista de instruções em que o programa se encontrava a quando da excepção.
¢O tipo é String.

TargetSite
¢É uma referência para um objecto do tipo da classe mãe que representa o método onde a execepção ocorreu. Se o  sistema não conseguir obter nada então o seu valor será Nothing.
¢O tipo é String
¢
ToString
¢Retorna a representação textual da excepção. Esta inclui o typo de excepção a mensagem e a StackTrace.

EXCEPÇÕES (cont)

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:12

0

¢Podemos ainda tratar de várias excepções do mesmo bloco try
Try
Catch e As System.DivideByZeroException
' ...
Catch e As System.OverflowException
' ...
End Try

EXCEPÇÕES (cont)

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:12

0

Try
Dim x As Integer = 0
Dim y As Integer = 1 \ x
 Catch e As System.DivideByZeroException
Console.WriteLine(e.Message)
End Try
Neste exemplo estamos a tratar de uma excepção em concreto.

EXCEPÇÕES (cont)

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:11

0

¢A variável declarada logo a seguir ao catch é do tipo Exception.
¢Todas as expeções são representadas pelos tipos de que derivam, directa o indirectamente to tipo excepção.
¢O as Type_name do bloco catch especifica o tipo de excepcção de que estamos a tratar e este está associado ao bloco de instruções imediatamente abaixo.

EXCEPÇÕES

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:11

0

Try
Dim x As Integer = 0
Dim y As Integer = 1 \ x
Catch e As Exception
Console.WriteLine(e.Message)
End Try


¢Quando o programa tenta dividir o inteiro por zero ocorre uma excepção, então o programa salta para o bloco onde está o Catch e executa essa parte do código, sem que isso termine a execução do mesmo.
¢
¢Se nenhuma excepção ocorrer dentro do bloco try, então o programa salta o bloco catch

EXCEPÇÕES

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:08

0


¢Por vezes erros ou condições especiais levam a que um determinado programa pare de funcionar. Um exemplo clássico desta ocorrência é a divisão de um número por zero.
¢
Dim x As Integer = 0
Dim y As Integer = 1 \ x
Quando o programa lê a linha de código que contém a divisão de um nº inteiro por zero ocorre um excepção.
Uma excepção é uma ocorrência que não é considerada normal no correcto fluxo do programa. Esta excepção é detectada e são tomadas as acções apropriadas. Normalmente o programa aborta a sua execução.





¢No visual Basic.NET os programas podem tratar das excepções.
¢Isto é possível colocando código com grande potencial de gerar excepções dentro de blocos Try…End Try
¢O exemplo seguinte mostra como poderemos tratar da excepção gerada por uma divisão por zero.

Metodod uteis da Class Stream

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:08

0

Metodo
Funcionalidade
BeginWrite
Inicia uma escrita assíncrona.
BeginRead
Inicia uma leitura assíncrona
Close
Fecha o stream e liberta qualquer recurso usado.
EndRead
Aguarda que uma leitura assíncrona termine.
EndWrite
Encerra uma escrita assíncrona.
Flush
Liberta os dados de um buffer de stream em um meio de armazenamento. (arquivo, memória, etc.).
Read
Lê bytes de um stream e avança a posição para o número de bytes.
ReadByte
Lê um byte de um stream e avança a sua posição em um byte.
Seek
Se o stream suporta a operação de pesquisa, define a posição no stream.
SetLength
Define o comprimento do stream. Se o stream actual é maior que o novo tamanho definido ele é truncado. Se o stream for menor ele é expandido.
Write
Escreve bytes num stream e avança a posição actual pelo número de bytes escritos.
WriteByte
Escreve um byte em um stream e avança a posição actual em um byte.

Propriedades da Class Stream

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:07

0

Propriedade
Descrição
CanRead
Retorna True se o stream suporta a leitura.
CanSeek
Retorna True se o stream suporta a busca para um posição particular do stream.
CanTimeout
Retorna True se o stream suporta timeout expiração de tempo para operações de leitura e escrita.
CanWrite
Retorna True se o stream suporta escrita.
Length
Retorna o número de bytes de um stream.
Position
Retorna a posição atual do Stream. Para um stream que suporta a busca, o programa pode definir este valor para se mover para uma posição particular.
ReadTimeout
Determina o número de mili-segundos que uma operação de leitura irá esperar até expirar.
WriteTimeout
Determina o número de mili-segundos que uma operação de escrita irá esperar até expirar.

Implementação

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:05

0

ÒBufferedStream: Fornece uma camada no buffer noutro stream para aumentar o desempenho.
 
ÒFileStream: Fornece uma forma de ler e escrever arquivos. 

ÒMemoryStream: Fornece um stream usando a memória como forma de armazenamento.



NetworkStream:  Fornece uma forma de aceder a dados numa rede.

CryptoStream:  Fornece uma forma de  suprimir dados para uma operação de criptografia.
De forma geral operações com stream envolvem operações de leitura , escrita e procura. ( read, write , seek ).

Exemplo - Streamwriter

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:04

0

Public Shared Sub Main()
' Cria uma instância de um StreamWriter para escrever para um arquivo
Using sw As StreamWriter = New StreamWriter("Macoratti.txt")
' Inclui algum texto
sw.Write("Este é um teste")
sw.WriteLine("-------------------")
' Outros objetos podem ser escritos no arquivo
sw.Write("Data : ")
sw.WriteLine(DateTime.Now)
sw.Close()
End Using
End Sub

A class Stream

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:03

0

ÒÉ abstracta , e por isso não pode ser instanciada directamente. Ao implementar uma classe derivada de Stream deverá fornecer-se implementações para os métodos Read e Write.

Exemplo

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:03

0

Public Shared Sub Main()
Try
' Cria uma instância de um StreamReader para ler um arquivo                        
Using sr As StreamReader = New StreamReader("Macoratti.txt")
Dim line As String
' Lê e exibe as linhas do aruquivo até o fim
Do
line = sr.ReadLine()
Console.WriteLine(line)
Loop Until line Is Nothing
sr.Close()
End Using
Catch E As Exception
' Exibe mensagem de erro
Console.WriteLine("O arquivo não pode ser lido")
Console.WriteLine(E.Message)
End Try
End Sub

Usar Steams

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:02

0

Usar Steams envolve as seguintes operações Fundamentais:


Ler a partir de streams. A leitura é a transferência de dados de um stream numa estrutura de dados como um array de bytes;
Escrever para streams. A escrita é a transferência de dados a partir de uma estrutura de dados para um stream;
Streams podem suportar a procura. A procura é a consulta e modificação de uma posição actual no interior do stream. A capacidade de busca depende do stream.

ClassStream

Posted by Paulo Ramos & João Martins | Posted in | Posted on 12:00

0


Define propriedades e Métodos que permitem Realizar operações genericascom fluxo de bytes 

Nota: Um stream pode ser considerado um  fluxo sequêncial de bytes com um arquivo, um dispositivo de entrada/saida,  um processo de comunicação entre dois pontos ou um socket TCP/IP. (Após esta explicação eu vou continuar a usar a palavra stream na sua forma original sem tradução.)

Java

Posted by Paulo Ramos & João Martins | Posted in | Posted on 07:56

0

Em 1991, a Sun Microsystems, iniciou o “Green Project”, o ponto de partida de uma linguagem de programação orientada a objectos denominada “Java”. 

Os mentores do projecto eram “Patrick Naughton”, “Mike Sheridan”, e “James Gosling


O objectivo do projecto não era a criação de uma nova linguagem de programação, mas antecipar e planear a “próxima era” do mundo digital. Eles acreditavam que no futuro iria existir  uma convergência dos computadores com os equipamentos e electrodomésticos usados pelas pessoas no seu dia-a-dia.

Para provar a viabilidade desta ideia, 13 pessoas trabalharam arduamente durante 18 meses. No verão de 1992 eles emergiram de um escritório de “Sand Hill Road” no “Menlo Park” com uma demonstração funcional da ideia inicial. 


O protótipo chamava-se 7 (“StarSeven”), um controlo remoto com uma interface gráfica “touchscreen”. Para o 7 foi criado uma mascote, hoje amplamente conhecido no mundo Java, o “Duke”.
O trabalho do “Duke” no 7 era ser um guia virtual ajudando e ensinando o utilizador a utilizar o equipamento.



O *7 tinha a possibilidade de controlar diversos dispositivos e aplicações. “James Gosling” especificou uma nova linguagem de programação para o *7. “Gosling” decidiu denominá-la de “Oak”.

O próximo passo era encontrar um mercado para o *7. A equipa achava que uma boa ideia seria controlar televisões e filmes. Eles construíram um demo a que deram o nome “MovieWood”, mas infelizmente era muito cedo para que os filmes por encomenda assim como as empresas de TV por cabo pudessem rentabilizar o negócio. A ideia que o *7 tentava vender naquela altura, é hoje realidade em programas interactivos e também na televisão digital. 


Permitir ao telespectador interagir com a programação numa grande rede por cabo, era algo muito visionário e estava muito longe do que as empresas de TV por cabo tinham capacidade de entender e comprar. A ideia certa, na época errada.

A sorte é que o boom da Internet aconteceu, e rapidamente estabeleceu-se uma grande rede interactiva. Era este tipo de rede interactiva que a equipa do *7 estava a tentar vender ás empresas de TV por cabo. Deixou então de ser necessário construir uma infra-estrutura para rede. “Gosling” foi incumbido a tarefa de adaptar o “Oak” para a Internet e em Janeiro de 1995 foi lançada uma nova versão do “Oak” que foi redenominada de Java. 


A tecnologia Java tinha sido projectada para mover-se através de redes de dispositivos heterogéneos, redes como a Internet. Agora aplicações poderiam ser executadas dentro dos Browsers nos Applets Java e tudo seria disponibilizado pela Internet instantaneamente. Foi o estático HTML dos Browsers que promoveu a rápida disseminação da dinâmica tecnologia Java. A velocidade dos acontecimentos seguintes foi assustadora, o número de utilizadores cresceu rapidamente, grandes empresas, como a IBM anunciaram suporte para a tecnologia Java.



Desde o seu lançamento, em Maio de 1995, a plataforma Java foi adoptada com uma rapidez superior a todas as outras linguagens de programação na história da computação.
Em 2003 Java atingiu a marca de 4 milhões de programadores em todo mundo. Java continuou e continua a crescer e hoje écom certeza um padrão para o mercado oferecendo qualidade, desempenho e segurança ainda sem nenhum rival a altura.
Java tornou-se popular pelo seu uso na Internet e hoje possui um ambiente de execução em web browsers, mainframes, SOs, telemóveis, entre outros.

A plataforma Java é o nome dado ao ambiente computacional, ou plataforma, da empresa norte-americana “Sun Microsystems”. O programador cria aplicações para este ambiente através da linguagem de programação Java e de um conjunto de ferramentas de desenvolvimento. Neste caso, a plataforma não se refere a um sistema operativo ou hardware específico, mas a um programa chamado de máquina virtual, e um conjunto de bibliotecas que disponibilizam funcionalidades comuns.

A plataforma Java é formada por outras três plataformas que foram criadas para segmentos específicos de aplicações:

Java SE (Java Platform, Standard Edition).
 
É a base da plataforma; inclui o ambiente de execução e as bibliotecas comuns.
 

Java EE (Java Plataform, Enterprise Edition).
 
A edição voltada para o desenvolvimento de aplicações empresariais.
 

Java ME (Java Platform, Micro Edition).
 
A edição para o desenvolvimento de aplicações para dispositivos móveis.




A plataforma Java é constituída por um grande número de tecnologias, cada uma contém uma parte distinta de todo o ambiente de desenvolvimento e execução de software. Os utilizadores finais, interagem com a máquina virtual Java (Java Virtual Machine, ou JVM) e um conjunto padrão de bibliotecas de classe.

Existe uma grande variedade de formas de utilizar uma aplicação Java, incluindo applets embutidas em páginas
web, aplicações para utilização em computadores, aplicações em telemóveis e em servidores de Internet.




O “coração” da plataforma Java é o conceito de um processador "virtual", que executa os programas formados por bytecodes Java. Este bytecode é o mesmo independentemente do hardware ou sistema operativo em que o programa é executado. A plataforma Java disponibiliza a JVM, que traduz, em tempo de execução, o bytecode para instruções nativas do processador. Isto permite que uma mesma aplicação seja executada em qualquer plataforma que possua uma implementação da máquina virtual.



Desde a versão 1.2 da JRE, a implementação da Sun da JVM inclui um compilador just-in-time (JIT). Com este compilador a totalidade do bytecode de um programa é transformado em instruções nativas e carregado na máquina virtual numa única operação, permitindo um ganho no desempenho superior a implementação anterior, onde as instruções em bytecode eram interpretadas uma a uma. O compilador JIT pode ser projectado de acordo com a plataforma ou hardware de destino, e o código que ele gera pode ser optimizado com base na observação de padrões de comportamento dos programas.


A plataforma Java não é a primeira plataforma baseada numa máquina virtual, mas é de longe a mais conhecida e a que alcançou maior sucesso. Anteriormente esta tecnologia era utilizada na criação de emuladores para auxílio a projectos de hardware ou de sistemas operativos. A plataforma Java foi desenhada para ser totalmente implementada em software, permitindo assim a sua migração de uma forma fácil para todos os tipos  de plataformas e de hardware.


Java é uma linguagem apoiada por um paradigama de programação chamado Programação Orientada a Objectos, sem o qual não é possível programar em Java. Como não espero que leiam os textos que indiquei, farei um pequeno resumo...

O que é isso de POO?

Conceito geral de Programação Orientada a Objectos
A Programação Orientada a Objectos consiste em ver um programa como um conjunto de entidades, os objectos, que interagem entre si através do uso de mensagens.
Cada objecto é definido por um grupo de atributos e por métodos que disponibiliza para o exterior.
Podem assim ser considerados pequenas caixas pretas cuja implementação não interessa para os outros objectos, apenas a forma como podem comunicar é importante.
Em
POO traduzir um problema real para programação torna-se mais fácil e natural uma vez que os objectos possuem muitas vezes semelhanças com objectos reais.
Java não é, no entanto, uma linguagem orientada a objectos pura uma vez que possui tipos de dados primitivos que não são objectos.


ALGUMAS DEFENIÇÕES
Para que todos falemos a mesma língua.

Package; Forma de organizar as classes ou outros recursos do programa, como imagens e ficheiros, por semelhanças, seja por categorias, funcionalidades ou outras.
Um
package pode conter outros dentro e por convenção o seu nome é em minúsculas.

Classe; Abstracção que define um objecto. Consideremos uma classe como um molde. Uma classe é normalmente definida num ficheiro mas um ficheiro pode ter outras classes definidas, que se chamam Classes Anónimas e Classes Internas. Estes últimos dois nomes são traduzidos de "Nested Class" e de "Inner Class" e por isso podem ver outras traduções.

Objecto ou instância; Resultado do molde ou classe ao qual foram aplicados valores. A classe String define um conjunto de caracteristas que qualquer 'string' possui. Em contrapartida "Knitter" pode ser o objecto resultante da classe String. Um objecto ou instância possui valores específicos, memória associada, referência, etc. 


Método; Capacidades do objecto de onde se salientam as formas de comunicação do mesmo. Os métodos podem ser de instância, na medida em que afectam apenas o objecto sobre o qual se invocou o método ou de classe afectando todas as instâncias da classe presentes.

Herança; Processo pelo qual os objectos ganham caracteristicas dos seus pais. Mas uma subclasse pode e deve introduzir comportamento e características próprias. Uma classe em Java é sempre subclasse de outra, por defeito da classe Object.
Encapsulamento; Conceito que permite esconder os detalhes de implementação de determinada classe. Os métodos e atributos de uma classe podem ser públicos, protegidos[1] ou privados dependendo se estão disponíveis para todas as outras classes, apenas subclasses, ou apenas na própria classe, respectivamente.Caso não seja especificado o tipo de acesso de determinado atributo/método, o Java assume que ele se encontra acessivel à própria classe e a classes no mesmo package.

Polimorfismo; Polimorfismo é a capacidade de um objecto redefinir o comportamento herdado provendo assim o aparecimento de duas classes que respondem de formas diferentes à mesma mensagem. Isto é, a classe Object possui um método chamado toString que transforma em String o nome da classe e alguns outros parâmetros. Ao criar a classe MeuObjeto posso redifinir o método para que apresente qualquer texto que eu queira. Ao ser invocado o método nos dois objectos, a mesma mensagem, produz efeitos diferentes.