Search the Community
Showing results for tags 'poo'.
-
Caríssimos, decidi desenferrujar algumas linguagens nas quais não tive a chance de pegar há muito. Chegou a hora do Delphi / Object Pascal. Ora bem, estou a fazer uma pequena biblioteca que me permite aplicar ANSI escape codes (AECs) no output, e tenho uma situação muito peculiar. De notar, estou a usar o Free Pascal 3.2.2. Indo directo ao problema: writeln( Ansify([BOLD, FG_RED], 'Fatality!') ); writeln( Ansify([ITALIC, FG(69)], 'Color Test, Standard') ); writeln( Ansify([UNDERLINE, BG(100, 50, 9)], 'Color Test, RGB') ); Quando executo este código de teste, a primeira chamada a Ansify funciona sem problemas. Contudo, a segunda chamada, independentemente do array que passo no primeiro argumento, dispara um Access Violation: \x[1;31mFatality!\x[0m An unhandled exception occurred at $00000000004124CA: EAccessViolation: Access violation $00000000004124CA $00000000004243FC $00000000004011AB Nota: forcei o output dos AECs para debugging durante o desevolvimento. Esta é a definição de Ansify: function Ansify(const codes : array of IAnsiCode; const msg : string) : string; begin Result := Codify(codes) + msg + Codify([RESET]); end; Onde: function Codify(const codes : array of IAnsiCode) : string; var code : IAnsiCode; begin Result := '\x['; // Result := ANSI_BEGIN; // TODO: switch when finishing first version for code in codes do begin Result += code.AsString; Result += ANSI_SEPARATOR; end; Delete(Result, Length(Result), 1); Result += ANSI_END; end; A ideia é ter IAnsiCode como uma interface comum a duas classes que implementam AECs, mas que apenas obriga ao mínimo: IAnsiCode = interface['{eeb511e3-0dbe-4fec-a72f-473f8bf8a8de}'] function AsString : string; function AsByte : byte; end; Não estou a usar uma class function construtora que permita gerir automaticamente a libertação de recursos uma vez que posso precisar de qualquer código a qualquer momento por N vezes num programa, pelo que estou a alocar os objectos na inicialização do módulo e a "destruí-los" na finalização: initialization RESET := TAnsiCode.Create(0); BOLD := TAnsiCode.Create(1); FAINT := TAnsiCode.Create(2); // etc... Aparentemente os objectos parecem ser todos destruídos após a primeira chamada a Ansify, tenham sido ou não usados na primeira chamada. A classe TAnsiCode está definida da seguinte forma: TAnsiCode = class(TInterfacedObject, IAnsiCode) private vCode : byte; vString : string; function WithCode(const code : byte) : IAnsiCode; public constructor Create(const code : byte); function AsString : string; function AsByte : byte; end; A minha questão é simples: Por quê Access Violation? Para onde foram os objectos todos? 😄 Cumprimentos.
- 14 replies
-
- delphi
- object pascal
-
(and 1 more)
Tagged with:
-
Boas, estou a tentar fazer uma lista para um inventário simples, mas deparei-me com o problema de que a Lista tem que levar um tipo. Sendo que tenho uma classe para cada item, como faria? Thanks in advance. (O código abaixo é um exemplo abstrato para o que pretendo, n foi compilado) //Inventory.cs public class Inventory { public List<Item> itemList; public Inventory() { itemList = new List<Item>(); } } //Keyboard.cs public class Keyboard { public int keys; public Keyboard() { keys = 67; } } //Monitor.cs public class Monitor { public int refreshRate; public Monitor() { refreshRate=60; } }
-
Ola! Preciso de ajuda com meu programa. Por favor! Tenho 3 Classes: Complexo: que faz operações entre números complexos, Matriz: cria matriz de complexos e faz operações entre matrizes Por ultimo, criei a Classe sistema que possui métodos para calcular a resolução de um sistema linear pelo método iterativo de Gauss, sendo os elementos da Matriz (Sistema) todos complexos. Até ai ok. O meu bug esta a ser em manipular as coisas no Main.cpp Preciso: primeiro verificar convergencia(), depois se convergir faço o calculo pelo metodo Gauss(). Por ultimo exibir a solução dada pelo metodo resultados(). Com duas classes fui até bem. Com tres já estou a misturar as coisas. #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include"Complexo.h" #include"Matriz.h" #include"Sistema.h" `insira o código aqui`int main() { Matriz AB,X; Sistema Y; AB.lerMatriz(); AB.escreverMatriz(); Y = AB; // verificar convergencia da matriz A if (Y.convergencia()) { printf("\nSistema pode ser calculado pelo metodo iterativo de Gauss-Siedel\n"); } // se convergencia ok calcular gauss } #pragma once class Complexo { private: float re, im; public: Complexo(); // Construtor cria um número nulo Complexo(float r, float i); void atribuir(float r, float i); void lerComplexo(); // ler complexo do teclado void imprimir(); // escrever complexo para o monitor float real() { return re; } // devolve coeficiente real float imaginario() { return im; } // devolve coeficiente imaginário float modulo(); // devolve módulo do número float argumento(); // devolve argumento do número Complexo conjugado(); // devolve o conjugado do número Complexo simetrico(); // devolve o simétrico do número Complexo potencia(float exp); // devolve potência do número // operações entre 2 complexos Complexo operator +(const Complexo& c); // adição Complexo operator -(const Complexo& c); // subtração Complexo operator *(const Complexo& c); // multiplicação Complexo operator /(const Complexo& c); // divisão // operações entre um complexo (operador da esquerda) e um real (operador da // direita) Complexo operator *(float f); Complexo operator /(float f); }; #define _CRT_SECURE_NO_WARNINGS #include "Complexo.h" #include<stdio.h> #include<math.h> Complexo::Complexo() { re = 0; im = 0; } Complexo::Complexo(float r, float i) { re = r; im = i; } void Complexo::atribuir(float r, float i) { float novo_re = r; float novo_im = i; } void Complexo::lerComplexo() { printf("Parte real:"); scanf("%f", &re); printf("\n"); printf("Parte imaginaria:"); scanf("%f", &im); printf("\n"); } void Complexo::imprimir() // escrever complexo para o monitor { printf("%.1f +%.1fi\t", re, im); } float Complexo::modulo() // devolve módulo do número { float m; m = float(sqrt(pow(re, 2) + pow(im, 2))); return m; } float Complexo::argumento() // devolve argumento do número { float arg; arg = float(atan2(im, re)); return arg; } Complexo Complexo::conjugado() // devolve o conjugado do número { Complexo c; c.re = re; c.im = -im; return c; } Complexo Complexo::simetrico() // devolve o simétrico do numero { Complexo s; s.re = re * (-1); s.im = im * (-1); return s; } Complexo Complexo::potencia(float exp) // devolve potência do número { Complexo p; float mod; mod = float(pow(modulo(), exp)); p.re = float(mod * cos(exp * argumento())); p.im =float( mod * sin(exp * argumento())); return p; } // operações entre 2 complexos Complexo Complexo::operator +(const Complexo& c) // adição { Complexo res; res.re = re + c.re; res.im = im + c.im; return res; } Complexo Complexo::operator -(const Complexo& c) // subtração { Complexo res; res.re = re - c.re; res.im = im - c.im; return res; } Complexo Complexo::operator *(const Complexo& c) // multiplicação { Complexo res; res.re = re * c.re - im * c.im; res.im = re * c.im + im * c.re; return res; } Complexo Complexo::operator /(const Complexo& c) // divisão { Complexo num, den, res; num = Complexo(re, im); den = c; num = *this * den.conjugado(); den = den * den.conjugado(); return Complexo(num.re / den.re, num.im / den.re); } // operações entre um complexo (operador da esquerda) e um real (operador da // direita) Complexo Complexo::operator *(float f) { Complexo res; res.re = re * f; res.im = im * f; return res; } Complexo Complexo::operator /(float f) { Complexo res; res.re = re / f; res.im = im / f; return res; } #pragma once #include "complexo.h" class Matriz { friend class Sistema; private: Complexo** elems; // elementos da matriz int nlin, ncol; // número de linhas e colunas public: void inicia(); // função para iniciar matriz void delete_matriz(); // função para apagar matriz Matriz(); //um construtor por omissão(a ordem da matriz é definida posteriormente) Matriz(int lin, int col); //um construtor que recebe a ordem da matriz e cria uma matriz com elementos a zero Matriz(const Matriz& m2); //um construtor por cópia ~Matriz(); // Um destrutor para eliminar os dados dinâmicos da classe void lerMatriz(); void escreverMatriz(); bool podeSomar(const Matriz& m2); bool podeMultiplicar(const Matriz& m2); Matriz& operator=(const Matriz& m2); Matriz operator+(const Matriz& m2); Matriz operator*(const Matriz& m2); }; #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include "Matriz.h" #include"Sistema.h" void Matriz::inicia() { elems = new Complexo * [nlin]; for (int i = 0; i < nlin; i++) { elems[i] = new Complexo[ncol]; } } void Matriz::delete_matriz() { for (int i = 0; i < nlin; i++) { delete[] elems[i]; } delete[] elems; } Matriz::Matriz() //um construtor por omissão(a ordem da matriz é definida posteriormente) { nlin = 1; ncol = 1; inicia(); } Matriz::Matriz(int lin, int col) //um construtor que recebe a ordem da matriz e cria uma matriz com elementos a zero { delete_matriz(); nlin = lin; ncol = col; inicia(); } Matriz::Matriz(const Matriz& m2) //um construtor por cópia { nlin = m2.nlin; ncol = m2.ncol; inicia(); for (int i = 0; i < nlin; i++) for (int j = 0; j < ncol; j++) elems[i][j] = m2.elems[i][j]; } Matriz::~Matriz() // Um destrutor para eliminar os dados dinâmicos da classe { delete_matriz(); } void Matriz::lerMatriz() { delete_matriz(); printf("Digite a ordem da Matriz Aumentada. Numero de linha e numero de colunas respectivamente\n\n"); printf("OBS: O numero de linhas da matriz aumentada corresponde ao numero de esquacoes do sistema\n"); printf("O numero de colunas = numero de linhas +1\n"); scanf("%d %d", &nlin, &ncol); inicia(); for (int i = 0; i < nlin; i++) { for (int j = 0; j < ncol; j++) { printf("\nDigite a posicao %dx%d da Matriz AB\n", i + 1, j + 1); elems[i][j].lerComplexo(); } } } void Matriz::escreverMatriz() { printf("\n"); for (int i = 0; i < nlin; i++) { for (int j = 0; j < ncol; j++) { elems[i][j].imprimir(); } printf("\n"); } } bool Matriz::podeSomar(const Matriz& m2) { return (nlin == m2.nlin && ncol == m2.ncol); } bool Matriz::podeMultiplicar(const Matriz& m2) { return (ncol == m2.nlin); } Matriz& Matriz::operator = (const Matriz& m2)// Operador Igual { delete_matriz(); nlin = m2.nlin; ncol = m2.ncol; inicia(); for (int i = 0; i < nlin; i++) { for (int j = 0; j < ncol; j++) { elems[i][j] = m2.elems[i][j]; } } return *this; } Matriz Matriz::operator + (const Matriz& m2) { Matriz mat(nlin, ncol); for (int i = 0; i < nlin; i++) { for (int j = 0; j < ncol; j++) { mat.elems[i][j] = elems[i][j] + m2.elems[i][j]; } } return mat; } Matriz Matriz::operator*(const Matriz& m2) { Matriz mat(nlin, m2.ncol); for (int i = 0; i < nlin; i++) { for (int j = 0; j < m2.ncol; j++) { for (int k = 0; k < ncol; k++) { mat.elems[i][j] = mat.elems[i][j] + (elems[i][k] * m2.elems[k][j]); } } } return mat; } #pragma once #include "Complexo.h" #include "Matriz.h" class Sistema { friend class Matriz; private: int ordem; public: Sistema() { Matriz(); } Matriz Matriz_AB;// matriz aumentada Matriz X; // vetor de icognitas void gauss(); bool convergencia(); void resultados(); }; #define _CRT_SECURE_NO_WARNINGS #define max_iter 100 //número máximo de iterações admissível #define tol 0.0001 //erro máximo admitido #include<stdio.h> #include "Sistema.h" #include "Matriz.h" #include "Complexo.h" #include <math.h> void Sistema::gauss() { Matriz X(ordem, 1);//vector das incógnitas na iteração actual Complexo x_antigo; //valor da incógnita na iteração anterior Complexo soma; float erro_x = 0; // erro_x - o erro da incógnita float erro_iter = 0; //erro_iter - erro da iteração int niter = 0; //numero de iteracoes do { niter++; float erro_iter = 0; for (int i = 0; i < ordem; i++) { x_antigo = X.elems[i][0]; //soma =0 for (int j = 0; j < ordem; j++) { if (j != i) soma = soma + (Matriz_AB.elems[i][j] * X.elems[j][1]); } X.elems[i][1] = (Matriz_AB.elems[i][ordem]) - (soma) / Matriz_AB.elems[i][i]; erro_x = (X.elems[i][0] - x_antigo).modulo(); if (erro_x > erro_iter) erro_iter = erro_x; } } while (erro_x > tol && niter < max_iter);//ver erro x return X; } bool Sistema::convergencia() { Complexo soma; for (int i = 0; i < ordem; i++) { for (int j = 0; j < ordem; j++) { if (j != i) soma = soma + Matriz_AB.elems[i][j]; } if (Matriz_AB.elems[i][i].modulo() > soma.modulo()) return true; else return false; } } void Sistema::resultados() { for(int i=0;i<ordem;i++) X.elems[i][1].imprimir(); }
-
Ola! Estou com um TP da faculdade em que tenho duas classes: Complexo e Matriz. O programa final deve exibir a soma e a multiplicação de duas matrizes de numeros complexos. O programa nao da erro porem nao exibe a soma e a multiplicação das matrizes. Alguem poderia ajudar-me? #pragma once class Complexo { private: float re, im; public: Complexo(); // Construtor cria um número nulo Complexo(float r, float i); void atribuir(float r, float i); void lerComplexo(); // ler complexo do teclado void imprimir(); // escrever complexo para o monitor float real() { return re; } // devolve coeficiente real float imaginario() { return im; } // devolve coeficiente imaginário float modulo(); // devolve módulo do número float argumento(); // devolve argumento do número Complexo conjugado(); // devolve o conjugado do número Complexo simetrico(); // devolve o simétrico do número Complexo potencia(float exp); // devolve potência do número // operações entre 2 complexos Complexo operator +(const Complexo& c); // adição Complexo operator -(const Complexo& c); // subtração Complexo operator *(const Complexo& c); // multiplicação Complexo operator /(const Complexo& c); // divisão // operações entre um complexo (operador da esquerda) e um real (operador da // direita) Complexo operator *(float f); Complexo operator /(float f); }; #define _CRT_SECURE_NO_WARNINGS #include "Complexo.h" #include<stdio.h> #include<math.h> Complexo::Complexo() { re = 0; im = 0; } Complexo::Complexo(float r, float i) { re = r; im = i; } void Complexo::atribuir(float r, float i) { float novo_re = r; float novo_im = i; } void Complexo::lerComplexo() { printf("Parte real:"); scanf("%f", &re); printf("\n"); printf("Parte imaginaria:"); scanf("%f", &im); printf("\n"); } void Complexo::imprimir() // escrever complexo para o monitor { printf("%.1f +%.1fi\t", re, im); } float Complexo::modulo() // devolve módulo do número { float m; m = float(sqrt(pow(re, 2) + pow(im, 2))); return m; } float Complexo::argumento() // devolve argumento do número { float arg; arg = float(atan2(im, re)); return arg; } Complexo Complexo::conjugado() // devolve o conjugado do número { Complexo c; c.re = re; c.im = -im; return c; } Complexo Complexo::simetrico() // devolve o simétrico do numero { Complexo s; s.re = re * (-1); s.im = im * (-1); return s; } Complexo Complexo::potencia(float exp) // devolve potência do número { Complexo p; float mod; mod = pow(modulo(), exp); p.re = mod * cos(exp * argumento()); p.im = mod * sin(exp * argumento()); return p; } // operações entre 2 complexos Complexo Complexo::operator +(const Complexo& c) // adição { Complexo res; res.re = re + c.re; res.im = im + c.im; return res; } Complexo Complexo::operator -(const Complexo& c) // subtração { Complexo res; res.re = re - c.re; res.im = im - c.im; return res; } Complexo Complexo::operator *(const Complexo& c) // multiplicação { Complexo res; res.re = re * c.re - im * c.im; res.im = re * c.im + im * c.re; return res; } Complexo Complexo::operator /(const Complexo& c) // divisão { Complexo num, den, res; num = Complexo(re, im); den = c; num = *this * den.conjugado(); den = den * den.conjugado(); return Complexo(num.re / den.re, num.im / den.re); } // operações entre um complexo (operador da esquerda) e um real (operador da // direita) Complexo Complexo::operator *(float f) { Complexo res; res.re = re * f; res.im = im * f; return res; } Complexo Complexo::operator /(float f) { Complexo res; res.re = re / f; res.im = im / f; return res; } #pragma once #include "complexo.h" class Matriz { private: Complexo** elems; // elementos da matriz int nlin, ncol; // número de linhas e colunas public: Matriz(); //um construtor por omissão(a ordem da matriz é definida posteriormente) Matriz(int lin, int col); //um construtor que recebe a ordem da matriz e cria uma matriz com elementos a zero Matriz(const Matriz& m2); //um construtor por cópia ~Matriz(); // Um destrutor para eliminar os dados dinâmicos da classe void lerMatriz(); void escreverMatriz(); bool podeSomar(const Matriz& m2); bool podeMultiplicar(const Matriz& m2); Matriz& operator=(const Matriz& m2); Matriz operator+(const Matriz& m2); Matriz operator*(const Matriz& m2); }; #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include "Matriz.h" Matriz::Matriz() //um construtor por omissão(a ordem da matriz é definida posteriormente) { nlin = 0; ncol = 0; elems = NULL; } Matriz::Matriz(int lin, int col) //um construtor que recebe a ordem da matriz e cria uma matriz com elementos a zero { nlin = lin; ncol = col; elems = new Complexo* [nlin]; for (int i = 0; i < nlin; i++) { elems[i] = new Complexo[ncol]; for (int j = 0; j < ncol; j++) { elems[i][j]=Complexo(); } } } Matriz::Matriz(const Matriz& m2) //um construtor por cópia { Matriz(m2.nlin, m2.ncol); for (int i = 0; i < nlin; i++) for (int j = 0; j < ncol; j++) elems[i][j] = m2.elems[i][j]; } Matriz::~Matriz() // Um destrutor para eliminar os dados dinâmicos da classe { for (int i = 0; i < nlin; i++) delete elems[i]; delete[]elems; } void Matriz:: lerMatriz() { printf("Digite a ordem da matriz. Numero de linha e numero de colunas respectivamente\n"); scanf("%d %d", &nlin, &ncol); elems = new Complexo* [nlin]; for (int i = 0; i < nlin; i++) { elems[i] = new Complexo[ncol]; for (int j = 0; j < ncol; j++) { printf("\nDigite a posição %dx%d da Matriz\n",i+1,j+1); elems[i][j].lerComplexo(); } } } void Matriz::escreverMatriz() { for (int i = 0; i < nlin; i++) { for (int j = 0; j < ncol; j++) { elems[i][j].imprimir(); } printf("\n"); } } bool Matriz::podeSomar(const Matriz& m2) { if (nlin == m2.nlin && ncol == m2.ncol) return true; else return false; } bool Matriz::podeMultiplicar(const Matriz& m2) { if (ncol == m2.nlin) return true; else return false; } Matriz& Matriz::operator = (const Matriz& m2)// Operador Igual { Matriz(m2.nlin, m2.ncol); for (int i = 0; i < nlin; i++) for (int j = 0; j < ncol; j++) elems[i][j] = m2.elems[i][j]; return *this; } Matriz Matriz::operator + (const Matriz& m2) { Matriz res(m2.nlin,m2.ncol); for (int i = 0; i < nlin; i++) for (int j = 0; j < ncol; j++) { res.elems[i][j] = elems[i][j] + m2.elems[i][j]; } return res; } Matriz Matriz::operator*(const Matriz& m2) { Matriz res(m2.nlin,m2.ncol); // matriz resultado for (int i = 0; i < m2.nlin; i++) for (int j = 0; j < m2.ncol; j++) { res.elems[i][j] = m2.elems[i][j] + (elems[i][j] * m2.elems[i][j]); } return res; } #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include"Complexo.h" #include"Matriz.h" #include"Complexo.h" int main() { Matriz A, B, C; A.lerMatriz(); A.escreverMatriz(); B.lerMatriz(); B.escreverMatriz(); if ((A.podeSomar(B)) != 0) { C = A + B; C.escreverMatriz(); } else { printf("\nSOMA NAO PODE SER EFETUADA"); } if ((A.podeMultiplicar(B)) != 0) { C = A * B; C.escreverMatriz(); } else { printf("\nMULTIPLICACAO NAO PODE SER EFETUADA"); } }
-
Ent, eu tenho um projeto de avaliação online que deve ser desenvolvido em linguagem POO, PDO, MySQL, etc. E o professor (tendo login e senha) vai fazer uma prova, e quando ele cria ele escolhe os tipos de questões que ele quer colocar na prova (múltipla escolha, v e f, somatória, etc), e quando ele clica em uma das opções tem que aparecer o tipo de questão que ele escolheu, daí ele escreve a pergunta e as resposta, e ele já tem que marcar qual está certa. Depois que ele faz toda a prova, ele manda para os alunos que tem uma conta e os alunos fazem a prova, e depois que eles fazem vem o resultado de cada aluno com a nota, ou seja, o sistema vai ver se aquele aluno acertou ou não e soma as questões que ele acertou, e da a nota para o professor. Mas eu não tenho nem ideia de como fazer isso, procurei alguns tutoriais na internet, mas nd. Alguém poderia me ajudar, pfv. Com urgência
-
Olá, boa noite! Por favor estou a precisar de uma ajuda. Estou com dúvida em como relacionar as classes Ponto e Rectangulo de modo a calcular a area. O resultado esta sempre a dar zero. Quem puder ajudar por favor. Tentei de algumas formas mas estou a ter dificuldades nessa parte da cadeira. Agradeço qq ajuda! #pragma once class Ponto { private: int x, y; // coordenadas do ponto public: Ponto(); // construtor por omissão Ponto(int x0, int y0); //construtor para atribuição void AtribuirXY(int novo_x, int novo_y); // novas coordenadas float ObterDistancia(Ponto p2); // calcula a distancia a um ponto p2 int ObterX() { return x; }; // devolve a coordenada x int ObterY() { return y; } // devolve a coordenada y }; #pragma once #include "Ponto.h" class Rectangulo { private: Ponto top_left, bottom_right; // Cantos do rectângulo public: Rectangulo(Ponto tl, Ponto br); Rectangulo(int x1, int y1, int x2, int y2); bool Contem(Ponto p); // Verifica se o ponto p está contido no rectangulo // corrente bool Contem(Rectangulo r); // Verifica se o rectângulo r está contido no // rectangulo corrente double ObterArea(); }; #include "Rectangulo.h" #include "Ponto.h" #include <stdio.h> Rectangulo::Rectangulo(Ponto tl, Ponto br) { tl.AtribuirXY(top_left.ObterX(), top_left.ObterY()); br.AtribuirXY(bottom_right.ObterX(), bottom_right.ObterY()); } Rectangulo::Rectangulo(int x1, int y1, int x2, int y2) { Ponto(x1,y1); Ponto(x2,y2); } bool Rectangulo::Contem(Ponto p) { return 1; } bool Rectangulo::Contem(Rectangulo r) { return 1; } double Rectangulo::ObterArea() { double area; area = (bottom_right.ObterX() - top_left.ObterX()) * (bottom_right.ObterY() - top_left.ObterY()); return area; } #include <stdio.h> #include "Rectangulo.h" #include "Ponto.h" int main() { printf("Programa que utiliza outra janela para os resultados.\n"); Rectangulo r(242, 177, 892, 377); printf("\nArea do rectangulo: %0.2f\n", r.ObterArea()); }
-
Olá, boa tarde! Estou aprendendo java e peguei um exercício no qual ele me dava a seguinte classe: class Pilha { static int TAM_MAX = 1000; int valores[]; int topo; } a) Monte um construtor para a classe acima; //Consegui resolver sem problemas b) Altere a declaração dos campos de forma que estes não possam ser modificados fora da classe Pilha."Eu não entendi isso, como assim não ser alterado fora da classe pilha? Essa parte eu gostaria de pedir ajuda de vocês, o que seria essa declaração que impede a modificação? Desde já, agradeço!
-
Pessoal, alguem me pode explicar muito rapidamente o que são tipos genéricos e para que servem exactamente? Preciso mesmo de saber isso Sff. 😉
-
Version 2007/2008
3,311 downloads
Alguns exercícios de Programação Orientada por Objectos, onde se pretende especificar um diagrama de classes UML para um problema dado. Inclui proposta de resolução para os problemas. Instituto Superior Técnico Programação Orientada por Objectos Autor: Professor Paulo Alexandre Crisóstomo Lopes -
Exercícios de Programação Orientada por Objectos (IST) Ver Ficheiro Alguns exercícios de Programação Orientada por Objectos, onde se pretende especificar um diagrama de classes UML para um problema dado. Inclui proposta de resolução para os problemas. Instituto Superior Técnico Programação Orientada por Objectos Autor: Professor Paulo Alexandre Crisóstomo Lopes Submetido por Rui Carlos Submetido em 01-12-2012 Categoria Exercícios c/ Solução Licença Website https://fenix.ist.utl.pt/disciplinas/poo-2/2007-2008/2-semestre/laboratorios/aulas Submetido pelo Autor? Não
-
Testes de Programação Orientada por Objectos (IST) Ver Ficheiro Testes de Programação Orientada por Objectos, com resolução (parcial em alguns casos). Instituto Superior Técnico Programação Orientada por Objectos Autor: Professor Paulo Alexandre Crisóstomo Lopes Submetido por Rui Carlos Submetido em 01-12-2012 Categoria Exercícios c/ Solução Licença Website https://fenix.ist.utl.pt/disciplinas/poo-2/2007-2008/2-semestre/testes-e-exames-passados Submetido pelo Autor? Não
-
Boas pessoal, É o seguinte: várias funções do php que começam por mysql_* estão a ficar desactualizadas, pelo que vi no site do PHP e no próprio ainda dizem para usar o MySQLI ou PDO. Como estou a começar um projecto de raíz, qual seria a melhor maneira de ligar à base de dados e fazer as querys? E também ouvi dizer que usando o Mysqli ou o PDO, ajudam bastante na protecção contra o mysql injection... Podem me dar algumas luzes? A melhor alternativa, classes que sejam boas... Cumps.
-
Bom dia, Onde eu consigo um exemplo de como criar um jogo 2D simples com POO em Java ? Obrigado
-
3,748 downloads
Universidade do Minho Programação Orientada aos Objectos Autor: Professor F. Mário Martins Conteúdo O Paradigma da Programação por Objectos JAVA: Tecnologia e Introdução à Linguagem Classes e Instâncias Blue J Hierarquia de Classes e Herança Classes Abstractas Interfaces Colecções e Tipos Parametrizados -
Apontamentos Teóricos de Programação Orientada aos Objectos (U. Minho) Ver Ficheiro Universidade do Minho Programação Orientada aos Objectos Autor: Professor F. Mário Martins Conteúdo O Paradigma da Programação por Objectos JAVA: Tecnologia e Introdução à Linguagem Classes e Instâncias Blue J Hierarquia de Classes e Herança Classes Abstractas Interfaces Colecções e Tipos Parametrizados Submetido por Rui Carlos Submetido em 30-05-2012 Categoria Textos Académicos Licença Website http://sim.di.uminho.pt/ensino2.php3?seccao=apoio&id=61 Submetido pelo Autor? Não
-
Apareceu no Reddit o link para um artigo de um blog. http://www.amazon.com/gp/blog/post/PLNKVUNBWIDAS9YQ A discussão é centrada a volta de uma proposta que surgiu em Maio deste ano, para aumentar o ensino do paradigma funcional para o mesmo nível que o paradigma OO. http://wiki.acm.org/cs2001/index.php?title=SIGPLAN_Proposal Está muito porreiro, principalmente com os comentários e a participação do Alan Kay, um dos pais do OOP.