Tamaño: 30
Comentario:
|
← Versión 22 con fecha 2019-10-03 21:05:33 ⇥
Tamaño: 9710
Comentario:
|
Los textos eliminados se marcan así. | Los textos añadidos se marcan así. |
Línea 1: | Línea 1: |
Escribe acerca de POO aquí. | {{attachment:resumen-poo.png|attachment:resumen-poo.png}} ---- '''Diagrama de ejemplo.''' {{attachment:diagrama_clases2.png|attachment:diagrama_clases2.png}} [[attachment:solucion2.zip|Códigos fuente C++.]] '''programa.cpp''' {{{#!highlight c++ /* * Compilación: $ make * Ejecución: $ ./programa */ #include <list> #include <iostream> #include "Proteina.h" #include "Cadena.h" #include "Aminoacido.h" #include "Atomo.h" #include "Coordenada.h" void print_proteina (Proteina p) { cout << endl; cout << "ID: " << p.get_id() << " Nombre: " << p.get_nombre() << endl; for (Cadena c: p.get_cadenas()) { cout << "Cadena: " << c.get_letra() << endl; for (Aminoacido a: c.get_aminoacidos()) { cout << "\tAminoacido: " << a.get_nombre() << ":" << a.get_numero() << endl; for (Atomo at: a.get_atomos()) { cout << "\t\tAtomo: " << at.get_nombre() << ":" << at.get_numero() << " [" << at.get_coordenada().get_x() << ", " << at.get_coordenada().get_y() << ", " << at.get_coordenada().get_z() << "]" << endl; } } } } /* */ int main (int argc, char **argv) { list<Proteina> proteinas; // instancia una proteina. Proteina p1 = Proteina("1rmd", "RAG1 DIMERIZATION DOMAIN"); // la agrega a la lista. proteinas.push_back(p1); // instancia una cadena. Cadena a = Cadena("A"); // instancia y agrega aminoacidos a la cadena. Aminoacido r = Aminoacido("CIS", 1); // instancia atomo. Atomo at = Atomo("CA", 1, 2.3, 3.3, 2.2); // agrega el átomo al aminoacido. r.add_atomo(at); // agrega otro átomo. r.add_atomo(Atomo("N", 2, 1.1, 2.1, 2.5)); a.add_aminoacido(r); a.add_aminoacido(Aminoacido("ALA", 2)); a.add_aminoacido(Aminoacido("HIS", 3)); // agrega la cadena a la proteína. p1.add_cadena(a); // crea otra cadena. Cadena b = Cadena("B"); // agrega aminoacidos a la cadena. b.add_aminoacido(Aminoacido("CYS", 5)); b.add_aminoacido(Aminoacido("CYS", 15)); b.add_aminoacido(Aminoacido("TYR", 3)); // agrega otra cadena a la proteína. p1.add_cadena(b); print_proteina(p1); return 0; } }}} '''Proteina.h ''' {{{#!highlight c++ #ifndef PROTEINA_H #define PROTEINA_H #include <list> #include <iostream> using namespace std; #include "Cadena.h" class Proteina { private: string id; string nombre; list<Cadena> cadenas; public: /* constructores */ Proteina (string id, string nombre); /* métodos get and set */ string get_nombre(); string get_id(); void set_nombre(string nombre); void set_id(string id); void add_cadena(Cadena cadena); list<Cadena> get_cadenas(); }; #endif }}} '''Proteina.cpp''' {{{#!highlight c++ /* */ #include <iostream> using namespace std; #include "Proteina.h" /* constructores */ Proteina::Proteina (string id, string nombre) { this->nombre = nombre; this->id = id; } /* métodos get and set */ string Proteina::get_nombre() { return this->nombre; } string Proteina::get_id() { return this->id; } void Proteina::set_nombre(string nombre) { this->nombre = nombre; } void Proteina::set_id(string id) { this->id = id; } void Proteina::add_cadena(Cadena cadena) { this->cadenas.push_back(cadena); } list<Cadena> Proteina::get_cadenas() { return this->cadenas; } }}} '''Cadena.h''' {{{#!highlight c++ #ifndef CADENA_H #define CADENA_H #include <list> #include <iostream> using namespace std; #include "Aminoacido.h" class Cadena { private: string letra; list<Aminoacido> aminoacidos; public: /* constructores */ Cadena (string letra); /* métodos get and set */ string get_letra(); list<Aminoacido> get_aminoacidos(); void set_letra(string letra); void add_aminoacido(Aminoacido aminoacido); }; #endif }}} '''Cadena.cpp''' {{{#!highlight c++ /* */ #include <iostream> using namespace std; #include "Cadena.h" /* constructores */ Cadena::Cadena (string letra) { this->letra = letra; } /* métodos get and set */ string Cadena::get_letra() { return this->letra; } void Cadena::set_letra(string letra) { this->letra = letra; } void Cadena::add_aminoacido(Aminoacido aminoacido) { this->aminoacidos.push_back(aminoacido); } list<Aminoacido> Cadena::get_aminoacidos() { return this->aminoacidos; } }}} '''Aminoacido.h''' {{{#!highlight c++ #ifndef AMINOACIDO_H #define AMINOACIDO_H #include <list> #include <iostream> using namespace std; #include "Atomo.h" class Aminoacido { private: int numero; string nombre; list<Atomo> atomos; public: /* constructores */ Aminoacido (string nombre, int numero); /* métodos get and set */ string get_nombre(); int get_numero(); void set_nombre(string nombre); void set_numero(int numero); void add_atomo(Atomo atomo); list<Atomo> get_atomos(); }; #endif }}} '''Aminoacido.cpp''' {{{#!highlight c++ /* */ #include <iostream> using namespace std; #include "Aminoacido.h" /* constructores */ Aminoacido::Aminoacido (string nombre, int numero) { this->nombre = nombre; this->numero = numero; } /* métodos get and set */ string Aminoacido::get_nombre() { return this->nombre; } int Aminoacido::get_numero() { return this->numero; } void Aminoacido::set_nombre(string nombre) { this->nombre = nombre; } void Aminoacido::set_numero(int numero) { this->numero = numero; } void Aminoacido::add_atomo(Atomo atomo) { this->atomos.push_back(atomo); } list<Atomo> Aminoacido::get_atomos() { return this->atomos; } }}} '''Atomo.h''' {{{#!highlight c++ #ifndef ATOMO_H #define ATOMO_H #include <iostream> using namespace std; #include "Coordenada.h" class Atomo { private: string nombre; int numero; Coordenada coordenada; public: /* constructores */ Atomo (string nombre, int numero, float x, float y, float z); /* métodos get and set */ string get_nombre(); int get_numero(); void set_nombre(string nombre); void set_numero(int numero); Coordenada get_coordenada(); }; #endif }}} '''Atomo.cpp''' {{{#!highlight c++ /* */ #include <iostream> using namespace std; #include "Atomo.h" /* constructores */ Atomo::Atomo (string nombre, int numero, float x, float y, float z) { this->nombre = nombre; this->numero = numero; this->coordenada = Coordenada(x, y, z); } /* métodos get and set */ string Atomo::get_nombre() { return this->nombre; } int Atomo::get_numero() { return this->numero; } void Atomo::set_nombre(string nombre) { this->nombre = nombre; } void Atomo::set_numero(int numero) { this->numero = numero; } Coordenada Atomo::get_coordenada() { return this->coordenada; } }}} '''Coordenada.h''' {{{#!highlight c++ #ifndef COORDENADA_H #define COORDENADA_H #include <iostream> using namespace std; class Coordenada { private: float x; float y; float z; public: /* constructores */ Coordenada (); Coordenada (float x, float y, float z); /* métodos get and set */ void set_x(float x); void set_y(float y); void set_z(float z); float get_x(); float get_y(); float get_z(); }; #endif }}} '''Coordenada.cpp''' {{{#!highlight c++ /* */ #include <iostream> using namespace std; #include "Coordenada.h" /* constructores */ Coordenada::Coordenada () {} Coordenada::Coordenada (float x, float y, float z) { this->x = x; this->y = y; this->z = z; } /* métodos get and set */ void Coordenada::set_x(float x) { this->x = x; } void Coordenada::set_y(float y) { this->y = y; } void Coordenada::set_z(float z) { this->z = z; } float Coordenada::get_x() { return this->x; } float Coordenada::get_y() { return this->y; } float Coordenada::get_z() { return this->z; } }}} '''Makefile''' {{{#!highlight c++ prefix=/usr/local CC = g++ CFLAGS = -g -Wall SRC = programa.cpp Proteina.cpp Cadena.cpp Aminoacido.cpp Atomo.cpp Coordenada.cpp OBJ = programa.o Proteina.o Cadena.o Aminoacido.o Atomo.o Coordenada.o APP = programa all: $(OBJ) $(CC) $(CFLAGS)-o $(APP) $(OBJ) clean: $(RM) $(OBJ) $(APP) install: $(APP) install -m 0755 $(APP) $(prefix)/bin uninstall: $(APP) $(RM) $(prefix)/bin/$(APP) }}} '''Compilación.''' {{{ $ make g++ -c -o programa.o programa.cpp g++ -c -o Proteina.o Proteina.cpp g++ -c -o Cadena.o Cadena.cpp g++ -c -o Aminoacido.o Aminoacido.cpp g++ -c -o Atomo.o Atomo.cpp g++ -c -o Coordenada.o Coordenada.cpp g++ -g -Wall -o programa programa.o Proteina.o Cadena.o Aminoacido.o Atomo.o Coordenada.o }}} '''Ejecución.''' {{{ $ ./programa ID: 1rmd Nombre: RAG1 DIMERIZATION DOMAIN Cadena: A Aminoacido: CIS:1 Atomo: CA:1 [2.3, 3.3, 2.2] Atomo: N:2 [1.1, 2.1, 2.5] Aminoacido: ALA:2 Aminoacido: HIS:3 Cadena: B Aminoacido: CYS:5 Aminoacido: CYS:15 Aminoacido: TYR:3 }}} |
Diagrama de ejemplo.
programa.cpp
1 /*
2 * Compilación: $ make
3 * Ejecución: $ ./programa
4 */
5 #include <list>
6 #include <iostream>
7 #include "Proteina.h"
8 #include "Cadena.h"
9 #include "Aminoacido.h"
10 #include "Atomo.h"
11 #include "Coordenada.h"
12
13 void print_proteina (Proteina p) {
14 cout << endl;
15
16 cout << "ID: " << p.get_id() << " Nombre: " << p.get_nombre() << endl;
17
18 for (Cadena c: p.get_cadenas()) {
19 cout << "Cadena: " << c.get_letra() << endl;
20
21 for (Aminoacido a: c.get_aminoacidos()) {
22 cout << "\tAminoacido: " << a.get_nombre() << ":" << a.get_numero() << endl;
23
24 for (Atomo at: a.get_atomos()) {
25 cout << "\t\tAtomo: " << at.get_nombre() << ":" << at.get_numero() << " [" <<
26 at.get_coordenada().get_x() << ", " << at.get_coordenada().get_y() << ", " <<
27 at.get_coordenada().get_z() << "]" << endl;
28 }
29 }
30 }
31 }
32
33 /*
34 */
35 int main (int argc, char **argv) {
36 list<Proteina> proteinas;
37
38 // instancia una proteina.
39 Proteina p1 = Proteina("1rmd", "RAG1 DIMERIZATION DOMAIN");
40
41 // la agrega a la lista.
42 proteinas.push_back(p1);
43
44 // instancia una cadena.
45 Cadena a = Cadena("A");
46 // instancia y agrega aminoacidos a la cadena.
47 Aminoacido r = Aminoacido("CIS", 1);
48 // instancia atomo.
49 Atomo at = Atomo("CA", 1, 2.3, 3.3, 2.2);
50 // agrega el átomo al aminoacido.
51 r.add_atomo(at);
52 // agrega otro átomo.
53 r.add_atomo(Atomo("N", 2, 1.1, 2.1, 2.5));
54
55 a.add_aminoacido(r);
56 a.add_aminoacido(Aminoacido("ALA", 2));
57 a.add_aminoacido(Aminoacido("HIS", 3));
58
59 // agrega la cadena a la proteína.
60 p1.add_cadena(a);
61
62 // crea otra cadena.
63 Cadena b = Cadena("B");
64 // agrega aminoacidos a la cadena.
65 b.add_aminoacido(Aminoacido("CYS", 5));
66 b.add_aminoacido(Aminoacido("CYS", 15));
67 b.add_aminoacido(Aminoacido("TYR", 3));
68
69 // agrega otra cadena a la proteína.
70 p1.add_cadena(b);
71
72 print_proteina(p1);
73
74 return 0;
75 }
Proteina.h
1 #ifndef PROTEINA_H
2 #define PROTEINA_H
3
4 #include <list>
5 #include <iostream>
6 using namespace std;
7 #include "Cadena.h"
8
9 class Proteina {
10 private:
11 string id;
12 string nombre;
13 list<Cadena> cadenas;
14
15 public:
16 /* constructores */
17 Proteina (string id, string nombre);
18
19 /* métodos get and set */
20 string get_nombre();
21 string get_id();
22
23 void set_nombre(string nombre);
24 void set_id(string id);
25 void add_cadena(Cadena cadena);
26 list<Cadena> get_cadenas();
27 };
28 #endif
29
Proteina.cpp
1 /*
2 */
3
4 #include <iostream>
5 using namespace std;
6 #include "Proteina.h"
7
8 /* constructores */
9 Proteina::Proteina (string id, string nombre) {
10 this->nombre = nombre;
11 this->id = id;
12 }
13 /* métodos get and set */
14 string Proteina::get_nombre() {
15 return this->nombre;
16 }
17 string Proteina::get_id() {
18 return this->id;
19 }
20 void Proteina::set_nombre(string nombre) {
21 this->nombre = nombre;
22 }
23
24 void Proteina::set_id(string id) {
25 this->id = id;
26 }
27 void Proteina::add_cadena(Cadena cadena) {
28 this->cadenas.push_back(cadena);
29 }
30 list<Cadena> Proteina::get_cadenas() {
31 return this->cadenas;
32 }
Cadena.h
1 #ifndef CADENA_H
2 #define CADENA_H
3 #include <list>
4 #include <iostream>
5 using namespace std;
6 #include "Aminoacido.h"
7
8 class Cadena {
9 private:
10 string letra;
11 list<Aminoacido> aminoacidos;
12 public:
13 /* constructores */
14 Cadena (string letra);
15
16 /* métodos get and set */
17 string get_letra();
18 list<Aminoacido> get_aminoacidos();
19
20 void set_letra(string letra);
21 void add_aminoacido(Aminoacido aminoacido);
22 };
23 #endif
24
Cadena.cpp
1 /*
2 */
3
4 #include <iostream>
5 using namespace std;
6 #include "Cadena.h"
7
8 /* constructores */
9 Cadena::Cadena (string letra) {
10 this->letra = letra;
11 }
12 /* métodos get and set */
13 string Cadena::get_letra() {
14 return this->letra;
15 }
16 void Cadena::set_letra(string letra) {
17 this->letra = letra;
18 }
19 void Cadena::add_aminoacido(Aminoacido aminoacido) {
20 this->aminoacidos.push_back(aminoacido);
21 }
22 list<Aminoacido> Cadena::get_aminoacidos() {
23 return this->aminoacidos;
24 }
Aminoacido.h
1 #ifndef AMINOACIDO_H
2 #define AMINOACIDO_H
3 #include <list>
4 #include <iostream>
5 using namespace std;
6 #include "Atomo.h"
7
8 class Aminoacido {
9 private:
10 int numero;
11 string nombre;
12 list<Atomo> atomos;
13
14 public:
15 /* constructores */
16 Aminoacido (string nombre, int numero);
17
18 /* métodos get and set */
19 string get_nombre();
20 int get_numero();
21
22 void set_nombre(string nombre);
23 void set_numero(int numero);
24 void add_atomo(Atomo atomo);
25 list<Atomo> get_atomos();
26 };
27 #endif
28
Aminoacido.cpp
1 /*
2 */
3
4 #include <iostream>
5 using namespace std;
6 #include "Aminoacido.h"
7
8 /* constructores */
9 Aminoacido::Aminoacido (string nombre, int numero) {
10 this->nombre = nombre;
11 this->numero = numero;
12 }
13 /* métodos get and set */
14 string Aminoacido::get_nombre() {
15 return this->nombre;
16 }
17 int Aminoacido::get_numero() {
18 return this->numero;
19 }
20 void Aminoacido::set_nombre(string nombre) {
21 this->nombre = nombre;
22 }
23 void Aminoacido::set_numero(int numero) {
24 this->numero = numero;
25 }
26 void Aminoacido::add_atomo(Atomo atomo) {
27 this->atomos.push_back(atomo);
28 }
29 list<Atomo> Aminoacido::get_atomos() {
30 return this->atomos;
31 }
Atomo.h
1 #ifndef ATOMO_H
2 #define ATOMO_H
3 #include <iostream>
4 using namespace std;
5 #include "Coordenada.h"
6
7 class Atomo {
8 private:
9 string nombre;
10 int numero;
11 Coordenada coordenada;
12
13 public:
14 /* constructores */
15 Atomo (string nombre, int numero, float x, float y, float z);
16
17 /* métodos get and set */
18 string get_nombre();
19 int get_numero();
20
21 void set_nombre(string nombre);
22 void set_numero(int numero);
23 Coordenada get_coordenada();
24 };
25 #endif
26
Atomo.cpp
1 /*
2 */
3
4 #include <iostream>
5 using namespace std;
6 #include "Atomo.h"
7
8 /* constructores */
9 Atomo::Atomo (string nombre, int numero, float x, float y, float z) {
10 this->nombre = nombre;
11 this->numero = numero;
12 this->coordenada = Coordenada(x, y, z);
13 }
14 /* métodos get and set */
15 string Atomo::get_nombre() {
16 return this->nombre;
17 }
18 int Atomo::get_numero() {
19 return this->numero;
20 }
21 void Atomo::set_nombre(string nombre) {
22 this->nombre = nombre;
23 }
24 void Atomo::set_numero(int numero) {
25 this->numero = numero;
26 }
27 Coordenada Atomo::get_coordenada() {
28 return this->coordenada;
29 }
Coordenada.h
1 #ifndef COORDENADA_H
2 #define COORDENADA_H
3 #include <iostream>
4 using namespace std;
5
6 class Coordenada {
7 private:
8 float x;
9 float y;
10 float z;
11
12 public:
13 /* constructores */
14 Coordenada ();
15 Coordenada (float x, float y, float z);
16
17 /* métodos get and set */
18 void set_x(float x);
19 void set_y(float y);
20 void set_z(float z);
21 float get_x();
22 float get_y();
23 float get_z();
24 };
25 #endif
26
Coordenada.cpp
1 /*
2 */
3
4 #include <iostream>
5 using namespace std;
6 #include "Coordenada.h"
7
8 /* constructores */
9 Coordenada::Coordenada () {}
10 Coordenada::Coordenada (float x, float y, float z) {
11 this->x = x;
12 this->y = y;
13 this->z = z;
14 }
15 /* métodos get and set */
16 void Coordenada::set_x(float x) {
17 this->x = x;
18 }
19 void Coordenada::set_y(float y) {
20 this->y = y;
21 }
22 void Coordenada::set_z(float z) {
23 this->z = z;
24 }
25 float Coordenada::get_x() {
26 return this->x;
27 }
28 float Coordenada::get_y() {
29 return this->y;
30 }
31 float Coordenada::get_z() {
32 return this->z;
33 }
Makefile
1 prefix=/usr/local
2 CC = g++
3 CFLAGS = -g -Wall
4 SRC = programa.cpp Proteina.cpp Cadena.cpp Aminoacido.cpp Atomo.cpp Coordenada.cpp
5 OBJ = programa.o Proteina.o Cadena.o Aminoacido.o Atomo.o Coordenada.o
6 APP = programa
7 all: $(OBJ)
8 $(CC) $(CFLAGS)-o $(APP) $(OBJ)
9 clean:
10 $(RM) $(OBJ) $(APP)
11 install: $(APP)
12 install -m 0755 $(APP) $(prefix)/bin
13 uninstall: $(APP)
14 $(RM) $(prefix)/bin/$(APP)
Compilación.
$ make g++ -c -o programa.o programa.cpp g++ -c -o Proteina.o Proteina.cpp g++ -c -o Cadena.o Cadena.cpp g++ -c -o Aminoacido.o Aminoacido.cpp g++ -c -o Atomo.o Atomo.cpp g++ -c -o Coordenada.o Coordenada.cpp g++ -g -Wall -o programa programa.o Proteina.o Cadena.o Aminoacido.o Atomo.o Coordenada.o
Ejecución.
$ ./programa ID: 1rmd Nombre: RAG1 DIMERIZATION DOMAIN Cadena: A Aminoacido: CIS:1 Atomo: CA:1 [2.3, 3.3, 2.2] Atomo: N:2 [1.1, 2.1, 2.5] Aminoacido: ALA:2 Aminoacido: HIS:3 Cadena: B Aminoacido: CYS:5 Aminoacido: CYS:15 Aminoacido: TYR:3