Contoh Program OOP
Dalam OOP terdapat 3 konsep dasar yaitu Encapsulation/Enkapsulasi, Polymorphisme dan Inheritance/Pewarisan. Ketiga konsep tersebut akan mempengaruhi seluruh program yang berorientasi pada object.
Misalnya terdapat kelas induk bernama Transformasi, berikut list programnya :
public abstract class Transformasi {
int x=2;
int y=4;
public abstract void cetakTitikAsal();
}
Class Transformasi diatas merupakan Abstract Class yaitu class yang tidak dapat dibuat instancenya. Saat sebuah class ditandai sebagai abstract class, maka compiler akan menghentikan code apabila ada statement new diikuti nama class tersebut. Jika kita menandai class sebagai abstract class, maka kita tidak dapat membuat objek baru dari class tersebut, tetapi kita masih dapat menggunakan class tersebut sebagai tipe referensi yang dideklarasikan. Abstract class sebenarnya secara virtual no use, no value, no purpose in life, kecuali hanya untuk diperluas (is extended). Yang bekerja saat runtime adalah instance subclass dari abstract class.
Kemudian class Transformasi memiliki 3 class turunan yaitu class Dilatasi, class Refleksi dan class Translasi. Berikut list programnya:
Listing Program class Dilatasi
public class Dilatasi extends Transformasi {
@Override
public void cetakTitikAsal() {
}
public void hasilDilatasi(int k){
System.out.println("Dilatasi oleh k menghasilkan titik ("+(k*x)+","+(k*y)+")");
}
}
Listing Program class Refleksi
public class Refleksi extends Transformasi {
int x=3;
int y=-5;
@Override
public void cetakTitikAsal() {
System.out.println("x = "+x+" dan y = "+y);
}
public void hasilRefleksi(){
}
}
Listing Program class Translasi
public abstract class Translasi extends Transformasi {
public abstract void hasilTranslasi();
}
Ketiga class diatas merupakan class turunan dari class Transformasi, ditandai dengan kata extends. Hal ini menggunakan konsep dasar Inheritance. Didalam Java inheritance berarti the subclass extends the superclass. Sebuah inhertance relationship berarti subclass mewarisi “the members of the superclass” (instance variables dan methods dari class tersebut).
Class Refleksi memiliki dua buah class turunan yaitu class RefleksiKeX dan class RefleksiKeY. Berikut list programnya :
Listing Program class RefleksiKeX
public class RefleksiKeX extends Refleksi {
public void hasilRefleksi(int a){
}
}
Listing Program class RefleksiKeY
public class RefleksiKeY extends Refleksi{
public void hasilRefleksi (int b){
System.out.println("Refleksi terhadap Y = "+b+" menghasilkan titik ("+x+","+(2*b-y)+")");
}
}
Kedua class turunan diatas (class RefleksiKeX dan class RefleksiKeY) memiliki method yang mengoverriding dan mengoverloading method induknya yaitu class Refleksi. Overriding a method maksudnya adalah membuat method lain dengan nama, daftar argumen dan tipe kembalian yang sama, tetapi body method yang berbeda. Sedangkan overloading maksudnya adalah membuat method lain dengan nama yang sama tetapi memiliki daftar argumen yang berbeda.
Class Translasi juga memiliki 1 class turunan yaitu class TranslasiT. Berikut list programnya :
public class TranslasiT <strong>extends</strong> Translasi {
public void hasilTranslasi(int a, int b){
System.out.println("Translasi oleh T menghasilkan titik ("+(x+a)+","+(y+b)+")");
}
@Override
public void hasilTranslasi() {
}
@Override
public void cetakTitikAsal() {
}
}
Class-class yang telah dibuat diatas dapat digunakan dengan membuat object yang menginstansiasi class yang digunakan. Sebelumnya class main dibuat terlebih dahulu dengan nama class TransformasiTestDrive. Berikut list programnya :
public class <strong>TransformasiTestDrive</strong> {
public static void main(String[] args) {
RefleksiKeX b1 = new RefleksiKeX();
RefleksiKeY b2 = new RefleksiKeY();
TranslasiT b3 = new TranslasiT();
Dilatasi b4 = new Dilatasi();
b1.<strong>cetakTitikAsal()</strong>;
b2.<strong>hasilRefleksi(3)</strong>;
b3.<strong>hasilTranslasi(-4, 5)</strong>;
b4.<strong>hasilDilatasi(2)</strong>;
}
}
Object yang dibuat adalah b1, b2, b3 dan b4. Masing-masing object akan menginstansiasi class dimana object tersebut dibuat. Object b1 akan menjalankan method cetakTitikAsal() yang diambil bukan dari class RefleksieX tetapi class Refleksi, karena method tersebut ada pada class Refleksi yang merupakan induk dari class RefleksiKeX.
Object b2 akan menjalankan method hasilRefleksi(3) dengan nilai argumen 3 yang merupakan method override dan overload dari class Refleksi.
Object b3 akan menjalankan method hasilTranslasi(-4, 5) dengan nilai argumen -4 dan 5 yang juga merupakan method yang telah dioverride dan dioverload dalam class TranslasiT.
Object b4 akan menjalankan method hasilDilatasi(2) dengan nilai argumen 2 yang terdapat dalam class Dilatasi.
Contoh Program JDBC
Koneksi Database Java Dengan MySQL
Dalam Java, untuk melakukan koneksi database dari java ke MySQL menggunakan JDBC. Sebelumnya kita harus meload atau mengaktifkan driver JDBC terlebih dahulu :
Class.forName("com.mysql.jdbc.Driver");
Setelah kita meload driver jdbc nya, koneksi ke database dapat dilakukan dengan perintah berikut:
Class.forName("com.mysql.jdbc.Driver");
Parameter pertama merupakan url atau informasi database yang meliputi jenis dbms, host dan nama database. Parameter kedua merupakan username, dan parameter ketiga merupakan password untuk koneksi ke database. Untuk lebih jelas, source code yang lebih lengkap dapat dilihat di bawah ini :
MySQLConnection.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;import java.util.logging.Level;
import java.util.logging.Logger;
/*
*To change this template, choose Tools | Templates
* and open the template in the editor.
*/
public class MySQLConnection {
private String url = "jdbc:mysql://localhost:3306/sekolah";
private String host = "localhost";
private int port = 3306;
private String username = "root";
private String password = "vertrigo";
private String database = "sekolah";
private Connection conn = null;
public MySQLConnection(){
try {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException ex) {
Logger.getLogger(MySQLConnection.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(MySQLConnection.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (ClassNotFoundException ex) {
Logger.getLogger(MySQLConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
public Connection getConn() {
if(conn==null){
try {
conn = DriverManager.getConnection(getUrl(), getUsername(), getPassword());
} catch (SQLException ex) {
Logger.getLogger(MySQLConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
return conn;
}
public void setConn(Connection conn) {
this.conn = conn;
}
public String getDatabase() {
return database;
}
public void setDatabase(String database) {
this.database = database;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
Kemudian kita buat fungsi Main untuk mencoba koneksi
Misal : Test.java
import com.mysql.jdbc.Connection;
public class Test {
public static void main(String[] args) {
MySQLConnection msqlc = new MySQLConnection();
Connection conn = null;
msqlc.setUrl("jdbc:mysql://localhost:3306/sekolah");
msqlc.setUsername("root");
msqlc.setPassword("vertrigo");
try {
msqlc.setConn(conn);
msqlc.getConn();
System.out.println("Koneksi Berhasil");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Koneksi Gagal");
}
}
}
Jika koneksi berhasil maka output yang dihasilkan adalah string koneksi berhasil, tetapi jika koneksi gagal maka outputnya adalah string koneksi gagal.
Contoh Program SERVLET
Dalam servlet terdapat dua class untuk melakukan response kepada user yaitu HttpResponse dan ServletResponse. ServletResponse merupakan class yang digunakan untuk mempresentasikan data kepada user. Method yang paling penting dalam class ServletResponse adalah getWriter() dengan method ini kita bisa memanggil object.java.io.PrintWriter yang bisa digunakan untuk menulis kode HTML atau text biasa.
Listing file index.html
< !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Send Request</title>
</meta>
</head>
<body>
<form action="Response" method="post">
Author : <input type="text"/>
<input type="submit" value="Submit"/>
</form>
</body>
</html>
Listing class ResponseServlet
package com.insideservlet.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class for Servlet: ResponseServlet
*
*/
public class ResponseServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public ResponseServlet() {
super();
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
public void service(ServletRequest request, ServletResponse response) throws IOException{
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Response</title>");
out.println("</head>");
out.println("<body>");
out.println("Server name : " + request.getServerName());
out.println("Server port : " + request.getServerPort());
out.println("Content Type : " + request.getContentType());
out.println("Content Length : " + request.getContentLength());
out.println("Protocol : " + request.getProtocol());
out.println("Address : " + request.getRemoteAddr());
out.println("</body>");
out.println("</html>");
}
}
Kemudian konfigurasi web.xml diganti menjadi seperti program dibawah ini:
< ?xml version="1.0" encoding="UTF-8"?> <web -app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display -name> InsideServlet</display> <servlet> <description> </description> <display -name> ResponseServlet</display> </servlet> <servlet -name>ResponseServlet</servlet> <servlet -class> com.insideservlet.servlet.ResponseServlet</servlet> <servlet -mapping> </servlet><servlet -name>ResponseServlet</servlet> <url -pattern>/Response</url> <welcome -file-list> </welcome><welcome -file>index.html</welcome> <welcome -file-list> </welcome></web>
Kemudian deploy program dan jalankan maka pada browser akan muncul output sebagai berikut :
Servlet ResponseServer name : localhost Server port : 8080 Content Type : application/x-www-from-urlencoded Content Length : 21 Protocol : HTTP/1.1 Address : 127.0.0.1
Contoh Program Gabungan OOP, JDBC, Servlet
Program dibawah merupakan program gabungan antara servlet, oop dan jdbc yang dapat digunakan sebagai poin awal dalam mengembangkan servlet-servlet lain yang berhubungan dengan database MySQL.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class HelloWorldServlet extends HttpServlet {
public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/html");
ServletOutputStream out = res.getOutputStream();
out.println("<html>");
out.println("<head><title>Hello World</title></head>");
out.println("<body>");
try {
// The newInstance() call is a work around for some
// broken Java implementations
out.println("asdf");
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
}
catch (Exception E) {
out.println("Unable to load driver.");
E.printStackTrace();
}
out.println("
<hr />");
try {
Connection Conn = DriverManager.getConnection("jdbc:mysql://sql.useractive.com/USERNAME?user=USERNAME&password=PASSWORD");
// Do something with the Connection
Statement Stmt = Conn.createStatement();
ResultSet RS = Stmt.executeQuery("SELECT * from SOMETABLE");
while (RS.next()) {
out.println(RS.getString(1));
}
// Clean up after ourselves
RS.close();
Stmt.close();
Conn.close();
}
catch (SQLException E) {
out.println("SQLException: " + E.getMessage());
out.println("SQLState: " + E.getSQLState());
out.println("VendorError: " + E.getErrorCode());
}
out.println("
<h1>Hello World. Sun... 1.4</h1>
");
out.println("</body></html>");
}
public String getServletInfo() {
return "Create a page that says <i>Hello World</i> and send it back";
}
}
