jueves, 18 de diciembre de 2008

Programación Orientada a objetos, Clases, Herencia y polimorfismo

Classes

Introduccion a los conceptos orientados a objetos en este ejemplo titulado Programacion Orientada a objetos se utilizan los conceptos usados en la clase bicicleta como ejemplo, se puede utilizar la clase para declarar subclases: bicicletas de carreras, bicicletas montañas,etc, como subclases. Aqui esta el codigo para una posible implementacion de la clase Bicicleta, para darte un vistazo de la declaracion de la clase.

Subsecuentemente las secciones de este ejemplo te explicaran los pasos para hacer las declaraciones de clases. Por el momento, no entraré en mas detalles...



package Transportes;

/**
*
* @author mtrejo
*/
public class Bicicleta {

// La clase Bicicleta tiene tres campos....
public int cadencia;
public int Engrane;
public int velocidad;

// La clase Bicicleta tiene un constructor....
public Bicicleta(int iniciarCadencia, int iniciarVelocidad, int iniciarEngrane) {
Engrane = iniciarEngrane;
cadencia = iniciarCadencia;
velocidad = iniciarVelocidad;
}

// La clase Bicicleta tiene cuatro metodos....
public void setcadencia(int nuevoValor) {
cadencia = nuevoValor;
}

public void setEngrane(int nuevoValor) {
Engrane = nuevoValor;
}

public void aplicarFreno(int decrementar) {
velocidad -= decrementar;
}

public void AumentarVelocidad(int incrementar) {
velocidad += incrementar;
}

}


Una declaracion de clase para BicicletaMontaña como subclase de Bicicleta se haría de la siguiente manera:



package Transportes;

/**
*
* @author mtrejo
*/
public class BicicletaMontaña extends Bicicleta {

//La subclase BicicletaMontaña tiene un campothe...
public int seatAltura;

//La subclase BicicletaMontaña tiene un constructor...
public BicicletaMontaña(int iniciarAltura, int iniciarCadencia, int iniciarVelocidad, int iniciarEngrane) {
super(iniciarCadencia, iniciarVelocidad, iniciarEngrane);
seatAltura = iniciarAltura;
}

//La subclase BicicletaMontaña tiene un metodo...
public void setAltura(int nuevoValor) {
seatAltura = nuevoValor;
}

}


BicicletaMontaña hereda todos los campos y metodos de Bicicleta y agrea el campo seatAltura y el metodo para manejarlo ( la bicicleta montaña se movera hacia arriba y hacia abajo como el terreno lo demande)....



Has visto que las clases se definen de la siguiente manera
class MiClase {
//campo, constructor y declaraciones del metodo
}

Esta es la declaracion de una clase. El cuerpo de la clase (area entre el signo de llaves) contiene todo el codigo que se le da para el ciclo de vida a los objetos creados de la clase: constructores para inicializar nuevos objetos, declaraciones, para los campos que proveen el estado de la clase y sus objetos, y metodos para impleemntar la conducta de la clase y sus objetos.

The preceding class declaration is a minimal one—it contains only those components of a class declaration that are required. You can provide more information about the class, such as the name of its superclass, whether it implements any interfaces, and so on, at the start of the class declaration. For example,
La precedencia a la declaracion de la clase es minima, solo contiene aquellos componentes de la declaracion de la clase que son requeridos. Puedes proveer mas informacion acerca de la clase, com oel nombre de su superclase,

class MyClass extends MySuperClass implements YourInterface {
//field, constructor, and method declarations
}


Continuara.....

miércoles, 10 de diciembre de 2008

INICIOS EN ORACLE

Hola toda la comunidad de desarrolladores

Aqui dejo algunos ejemplos de los primeros pasos en el aprendizaje de ORACLE
para referencia de quien quiera hacer tablas y manejar procedimientos



######################################################
Oracle PL/SQL
######################################################
Crear Tablas
######################################################

CREATE TABLE estudiantes (
id NUMBER(5) PRIMARY KEY,
nombre CHAR(29),
apellido CHAR(29)
especialidad CHAR(29),
creditos NUMBER
);

CREATE TABLE aulas (
idaula NUMBER(5) PRIMARY KEY,
edificio CHAR(15),
numeroaula NUMBER,
numeroasientos NUMBER,
descripcionaula CHAR(50)
);


CREATE TABLE especialidades (
especialidades CHAR(3),
totalcreditos NUMBER,
totalestudiantes NUMBER
);


CREATE TABLE cursos(
departamento CHAR(3),
ncurso NUMBER,
descripcioncurso CHAR(200),
cupoestudiantes NUMBER,
nestudiantes NUMBER,
ncreditos NUMBER,
idaula NUMBER,
CONSTRAINT cursos_departamento_ncurso
PRIMARY KEY(departamento, ncurso),
CONSTRAINT cursos_idaula
FOREIGN KEY(idaula) REFERENCES aulas (idaula)
);

CREATE TABLE estudios(
idestudiante NUMBER NOT NULL,
departamento CHAR(3) NOT NULL,
Ncurso NUMBER NOT NULL,
grado CHAR(1),
CONSTRAINT estudios_grado
CHECK(grado IN('A','B','C','D','E')),
CONSTRAINT estudios_idestudiante
FOREIGN KEY(idestudiante) REFERENCES estudiantes (id),
CONSTRAINT estudios_departamento_ncurso
FOREIGN KEY (departamento, ncurso) REFERENCES cursos (departamento, ncurso)
);


CREATE TABLE cambios(
tipo CHAR(1) NOT NULL,
razon VARCHAR(8) NOT NULL,
fecha DATE NOT NULL,
antiguoestudiante NUMBER(5),
antiguodepartamento CHAR(3),
antiguoncurso NUMBER(3),
antiguogrado CHAR(1),
nuevoidestudiante NUMBER(3),
nuevodepartamento CHAR(3),
nuevoncurso NUMBER(3),
nuevogrado CHAR(1)
);

CREATE TABLE errores(
codigo NUMBER,
mensaje VARCHAR(200),
informacion VARCHAR(100)
);

CREATE TABLE temporal(
columnanumerica NUMBER,
columnacaracter VARCHAR(100)
);

CREATE TABLE debug(
nlinea NUMBER,
texto VARCHAR2(100)
);

CREATE SEQUENCE secuencia
START WITH 10000
INCREMENT BY 1;

INSERT INTO estudiantes VALUES(1, 'Scott', 'Smith', 'Computer Science', 0);
INSERT INTO estudiantes VALUES(2, 'Margaret', 'Mason', 'History', 0);
INSERT INTO estudiantes VALUES(3, 'Joane', 'Junebug', 'Computer Science', 0);
INSERT INTO estudiantes VALUES(4, 'Manish', 'Mugratroid', 'Economics', 0);
INSERT INTO estudiantes VALUES(5, 'Patrick', 'Poll', 'History', 0);
INSERT INTO estudiantes VALUES(6, 'Timothy', 'Taller', 'History', 0);
INSERT INTO estudiantes VALUES(7, 'Barbara', 'Blue', 'Economics', 0);
INSERT INTO estudiantes VALUES(8, 'David', 'Dinsmore', 'Music', 0);
INSERT INTO estudiantes VALUES(9, 'Ester', 'Elegant', 'Nutrition', 0);
INSERT INTO estudiantes VALUES(10, 'Rosy', 'Riznit', 'Music', 0);
INSERT INTO estudiantes VALUES(11, 'Rita', 'Razmataz', 'Nutrition', 0);

INSERT INTO aulas VALUES(99999, 'Building 7', 310, 1000, 'Large Lecture Hall');
INSERT INTO aulas VALUES(99998, 'Building 6', 101, 500, 'Small LEcture Hall');
INSERT INTO aulas VALUES(99997, 'Building 6', 150,50, 'Discussion Room A');
INSERT INTO aulas VALUES(99996, 'Building 6', 160,50, 'Discussion Room B');
INSERT INTO aulas VALUES(99995, 'Building 6', 179,50, 'Discussion Room C');
INSERT INTO aulas VALUES(99994, 'Music Building', 100, 10, 'Music Practice Room');
INSERT INTO aulas VALUES(99993, 'Music Building', 200, 1000, 'Concert Room');
INSERT INTO aulas VALUES(99992, 'Building 7', 300, 75, 'Discussion Room D');
INSERT INTO aulas VALUES(99991, 'Building 7', 300, 50, 'Discussion Room E');


######################################################
UPDATE
######################################################

UPDATE CURSOS
SET DEPARTAMENTO='CS' WHERE departamento='cS'

######################################################
PROCEDIMIENTOS
######################################################

CREATE OR REPLACE PROCEDURE AñadeNuevoEstudiante(
p_Nombre estudiantes.nombre%TYPE,
p_Apellido estudiantes.apellido%TYPE,
p_Especialidad estudiantes.especialidad%TYPE) AS
BEGIN
--Inserta una nueva fila en la tabla estudiantes
--Usa secuencia para generar un nuevo ID estudiante
--y asigna el valor cero a creditos
INSERT INTO estudiantes(ID, nombre, apellido, especialidad, creditos)
VALUES(secuencia.nextval, p_Nombre, p_Apellido, p_Especialidad, 0);
COMMIT;
END AñadeNuevoEstudiante;
/

######################################################
Invocar Procedimiento
######################################################

BEGIN
AñadeNuevoEstudiante('David','Lewis','Music');
END;
/

######################################################
CADENAS
SUBSTRAER UNA CADENA
######################################################
SELECT SUBSTR('0000000000'||'123456',1,15) "Subcad" FROM DUAL;

REGRESA del :

Subcad
------------
'000000000012345'

Seguire Agregando mas...

http://sqleficiente.wordpress.com/

"Cual quier reto por dificil que sea, si se puede lograr, si realmente lo intentamos"

Saludos!!

Marco

:D