Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 15:47, 26 October 2007.

Classes de uma aplicação

From Forum Nokia Wiki

Ao criar um projeto Symbian OS C++, são geradas quatro classes necessárias para a execução da aplicação.

Contents

Classes

Application
Document
AppUi
Container

Application

const TUid KUidMyAppApp = { _UID3 };
 
class CMyAppApplication : public CAknApplication
	{
	public:
		TUid AppDllUid() const;
 
	protected:
		CApaDocument* CreateDocumentL();
	};

Ao iniciar um programa está é a primeira classe a ser chamada, ela é responsável por criar e retornar um ponteiro do documento, bem como retornar o UID3 da aplicação.

AppDLLUid() - É chamado pelo processo da aplicação imediatamente após a criação da aplicação, retorna o UID3 específico da aplicação.
CreateDocumentL() - Cria e retorna um ponteiro para o documento criado, sempre será chamada após AppDllUid().

Document

class CMyAppDocument : public CAknDocument
	{
	public: 
		static CMyAppDocument* NewL( CEikApplication& aApp );
		static CMyAppDocument* NewLC( CEikApplication& aApp );
		virtual ~CMyAppDocument();
 
	public: 
		CEikAppUi* CreateAppUiL();
 
	private: 
		void ConstructL();
		CMyAppDocument( CEikApplication& aApp );
 
	};

A classe documento normalmente é utilizada para o programa implementar armazenamento de dados em um arquivo. Outra função da classe document é fazer a construção do AppUi. Como ainda não estamos manipulando nenhum dado, esta função apenas fará a criação da user interface.

CreateAppUiL() - Cria a AppUi e retornar um ponteiro para isto.

AppUi

class CMyAppAppUi : public CAknAppUi
	{
	public:
		void ConstructL();
		CMyAppAppUi();
		virtual ~CMyAppAppUi();
 
	private:
		void HandleCommandL( TInt aCommand );
		void HandleStatusPaneSizeChange();
	 	CArrayFix<TCoeHelpContext>* HelpContextL() const;
 
	private:
		CMyAppAppView* iAppView;
		
		
	};

Esta função não é responsável por exibir dados na tela, mas é responsável por gerênciar e criar views que fazem isso. Esta função também é responsável por manipular comandos e eventos da aplicação implementando funções virtuais, como eventos de menus e toolbars.

Alguns exemplos de comandos suportados:

HandleKeyEventL(): // Eventos do teclado.
HandleForegroundEventL(): // Aplicação foi para Foreground.
HandleSwitchOnEventL(): // Dispositivo ligou.
HandleSystemEventL(): // Eventos do sistema.
HandleWsEvent(): // Eventos do Window Server
HandleApplicationSpecificEventL(): // Eventos especifícos da aplicação.
HandleCommandL(): // Manipula comandos definidos no arquivo de recursos.

Container

class CDrawExemploAppView : public CCoeControl
	{
	public: 
		static CMyAppAppView* NewL( const TRect& aRect );
		static CMyAppAppView* NewLC( const TRect& aRect );
		virtual ~CMyAppAppView();
	public: // Funções da classe-base
		void Draw( const TRect& aRect ) const;
                void SizeChanged();
	private:
		void ConstructL(const TRect& aRect);
                CMyAppAppView()
 
	};

Containers são criados na construção em duas fases do AppUi, são responsáveis por exibir controles para o usuário. Um view é responsável por um container, este container contêm um ou vários controles. Na Traditional Symbian OS Control-Based Architecture o view é o próprio controle, é a forma mais simples e a utilizada na criação default do seu projeto.

NewL(), NewLC(), ConstructL() - Fazem parte da construção em duas fases do controle, garantindo que caso ocorram abandonos durante a criação do controle, eles serão gerenciados corretamente.
Draw() - Realiza os desenhos no container, nesse caso apenas limpa a tela.
SizeChanged() - É chamado quando o container é criado/resized.

Derivações das classes

Image:Derivacoesclasse.JPG

O Exemplo acima demonstra como se da a derivação das classes utilizada em uma aplicação chamada MyApp.

Todas as classes no topo do diagrama são específicas da aplicação, elas são derivadas das camadas mais baixas para fornecer a instância da Aplicação e funcionalidades específicas.

Artigos relacionados

Arquitetura da aplicação

Related Discussions
Thread Thread Starter Forum Replies Last Post
KSoap with NDS as Standalone becem Mobile Java Tools & SDKs 4 2003-08-05 10:53
Two Phase Constructor ovvenkatesan General Symbian C++ 7 2007-10-12 11:57
3650 posted a few weeks ago but still no joy wprescott Mobile Java General 6 2003-08-31 22:57
Problems with installing an bluetooth-midlet to 6600. mika1982 Mobile Java General 1 2003-11-19 11:47
Standard Packages and Classes normally found in SDK 1.4 on pc's mikearundel Mobile Java Tools & SDKs 1 2002-12-24 10:09
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX