JSF LOGIN SECURITY
19 Eylül 2017 Salı
13 Ocak 2017 Cuma
Java – Binary Search Algorithm – İkili Arama Algoritması
Java – Binary Search Algorithm – İkili Arama Algoritması
BinarySearch sıralı olmayan dizilerde arama yaparken arama süresini dramatik bir şekilde düşüren bir algoritma ,yani dizinin başından başlayarak aradığımız elemanı aradığımız elamanın indisine kadar dönmek yerine çok daha efektif ve hızlı çalışıyor.
Teorik olarak değilde basitçe nasıl çalıştığını anlatalım. BinarySearch çocukken sayı tahmin etme oyununda farkında olmadan içgüdüsel kullandığımız algoritma . Bu oyunu oynamayanlar yada hatırlamayanlar için hatırlatalım.Örneğin arkadaşınız aklından 1-100 arasında sayı tutuyor ve sen sayı tahmin ettiğin zaman olası üç ihtimalden ,seçtiğin sayıdan yukarıda,aşağıda yada doğru bildiğini söyleyecek.
Sayıyı en az tahminle bulabilmeniz için 50 den başlamalıyız çünkü arkadaşımız tutuğu sayının aşağıda ve yukarıda olmasına göre her iki durumda tahmin edebileceğimiz sayı miktarını yarıya indirmiş olacağız örneğin daha yukarıda olduğunu söyledi sayının 51-100 arasında olduğunu anlamış olacağız.İkinci tahminimiz 75 olmalı ve şekilde sayıyı bulana kadar devam etmeli.
Yani gördüğünüz gibi BinarySearch algoritması ile sıralanmamış dizilerde çok daha kısa sürede ve daha az hamle ile aradığımız sayıyı buluyoruz.
Şimdi Java dilinde nasıl ifade edebiliriz ona bakalım.
1 Ocak 2017 Pazar
Java Consumer and Producer
/***********************************************************************************
---------Processor--------
+lock
+liste
+LIMIT
-consumer()
-producer()
-start()
-----------------------------
Processor sınıfı içinde bir bağlı liste tutmaktadır. Uretici maksimum üretim miktarı 10 olarak belirlenmiştir.
Uretim başlamadan tüketim yapılamaz.Tüketici 10 elamanını tükettikten sonra bekleme durumunda. Uretici ise LIMIT=10 ulaştığında üretimi durdurmaktadır.Taki tüketici ürünleri alana kadar.
LIMIT=0 ise Üretici üretmeye başlar. LIMIT=10 ise Tüketici tüketmeye başlar. LIMIT=10 Üretim durmaktadır. LIMIT=0 ise Tüketici beklemektedir.
/*********************Source Code Java*************************************
package com.thre.aproach;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author ozaytunctan13
*/
public class Processor {
private Object lock = new Object();
private LinkedList<Integer> list = new LinkedList<>();
private final int LIMIT = 10;
private int value = 0;
public void consume() throws InterruptedException {
while (true) {
synchronized (lock) {
while (list.size() == 0) {
lock.wait();
}
System.out.print("List is size " + list.size());
int val = list.removeFirst();
System.out.println(" consumer is value is " + val);
lock.notify();
}
Thread.sleep(1000);
}
}
public void produce() throws InterruptedException {
while (true) {
synchronized (lock) {
while (list.size() == LIMIT) {
try {
lock.wait();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
list.add(value++);
lock.notify();
}
}
}
public void start() {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
try {
produce();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
try {
consume();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (Exception e) {
}
}
public static void main(String[] args) {
Processor p = new Processor();
p.start();
}
}
---------Processor--------
+lock
+liste
+LIMIT
-consumer()
-producer()
-start()
-----------------------------
Processor sınıfı içinde bir bağlı liste tutmaktadır. Uretici maksimum üretim miktarı 10 olarak belirlenmiştir.
Uretim başlamadan tüketim yapılamaz.Tüketici 10 elamanını tükettikten sonra bekleme durumunda. Uretici ise LIMIT=10 ulaştığında üretimi durdurmaktadır.Taki tüketici ürünleri alana kadar.
LIMIT=0 ise Üretici üretmeye başlar. LIMIT=10 ise Tüketici tüketmeye başlar. LIMIT=10 Üretim durmaktadır. LIMIT=0 ise Tüketici beklemektedir.
/*********************Source Code Java*************************************
package com.thre.aproach;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author ozaytunctan13
*/
public class Processor {
private Object lock = new Object();
private LinkedList<Integer> list = new LinkedList<>();
private final int LIMIT = 10;
private int value = 0;
public void consume() throws InterruptedException {
while (true) {
synchronized (lock) {
while (list.size() == 0) {
lock.wait();
}
System.out.print("List is size " + list.size());
int val = list.removeFirst();
System.out.println(" consumer is value is " + val);
lock.notify();
}
Thread.sleep(1000);
}
}
public void produce() throws InterruptedException {
while (true) {
synchronized (lock) {
while (list.size() == LIMIT) {
try {
lock.wait();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
list.add(value++);
lock.notify();
}
}
}
public void start() {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
try {
produce();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
try {
consume();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (Exception e) {
}
}
public static void main(String[] args) {
Processor p = new Processor();
p.start();
}
}
31 Aralık 2016 Cumartesi
Java Array
/***
/* N- boyutlu bir dizi içerisinde herbir elemanın tekrarlanma sayısını bulan bir static Array.counterArray(int[]) fonksiyonu.
örneğin:
Array{1,1,1,4,6,4,4,5,6,1}
1 den>4 adet
4 ten>3 adet
5 ten>1 adet
6 dan>2adet gibi
*********************************************************************************
public class Array {
public static int search(int[] k, int val) {
for (int i = 0; i < k.length; i++) {
if (k[i] == val) {
return i;
}
}
return -((int)Math.random()*val);
}
public static TValue counterArray(int[] dizi) {
TValue t = new TValue();
for (int i = 0; i < dizi.length; i++) {
int val = dizi[i];
int pc = 0;
if (Array.search(Array.toCastInt(t.value.toArray()), val) < 0) {
for (int j = i; j < dizi.length; j++) {
if (val == dizi[j]) {
pc++;
}
}
t.value.add(val);
t.key.add(pc);
} else {
continue;
}
}
return t;
}
private static int[] toCastInt(Object[] toArray) {
int[] val = new int[toArray.length];
for (int i = 0; i < val.length; i++) {
val[i] = Integer.parseInt(toArray[i].toString());
}
return val;
}
public static void main(String[] args) {
int[] d = {3,1,1,1,1,1,3,7,3,3,2,1,1};
System.out.println("Array:"+Arrays.toString(d));
TValue tem = Array.counterArray(d);
System.out.println(tem.dump());
System.out.println("search 2>index:"+Array.search(d, 2));
}
}
/* N- boyutlu bir dizi içerisinde herbir elemanın tekrarlanma sayısını bulan bir static Array.counterArray(int[]) fonksiyonu.
örneğin:
Array{1,1,1,4,6,4,4,5,6,1}
1 den>4 adet
4 ten>3 adet
5 ten>1 adet
6 dan>2adet gibi
*********************************************************************************
public class Array {
public static int search(int[] k, int val) {
for (int i = 0; i < k.length; i++) {
if (k[i] == val) {
return i;
}
}
return -((int)Math.random()*val);
}
public static TValue counterArray(int[] dizi) {
TValue t = new TValue();
for (int i = 0; i < dizi.length; i++) {
int val = dizi[i];
int pc = 0;
if (Array.search(Array.toCastInt(t.value.toArray()), val) < 0) {
for (int j = i; j < dizi.length; j++) {
if (val == dizi[j]) {
pc++;
}
}
t.value.add(val);
t.key.add(pc);
} else {
continue;
}
}
return t;
}
private static int[] toCastInt(Object[] toArray) {
int[] val = new int[toArray.length];
for (int i = 0; i < val.length; i++) {
val[i] = Integer.parseInt(toArray[i].toString());
}
return val;
}
public static void main(String[] args) {
int[] d = {3,1,1,1,1,1,3,7,3,3,2,1,1};
System.out.println("Array:"+Arrays.toString(d));
TValue tem = Array.counterArray(d);
System.out.println(tem.dump());
System.out.println("search 2>index:"+Array.search(d, 2));
}
}
27 Ekim 2016 Perşembe
Java Netbeans Array Example
*********************************************************************************
*Java da bir diziye n adet max-min aralığında rastgele sayı ekleyen ve bu sayıların birbirinden faklı olmasını sağlayan java kodu aşağıda verilmiştir.
*Java da bir diziye n adet max-min aralığında rastgele sayı ekleyen ve bu sayıların birbirinden faklı olmasını sağlayan java kodu aşağıda verilmiştir.
* örneğin N =10 olduğunda max-min>=10 olmalıdır.
*N=20 ise max=25 min=5 ; N<=(max-min) olmalıdır.
*********************************************************************************
public class Array {
private static int binarySearch(int[] array, int val) {
for (int i = 0; i < array.length; i++) {
if (array[i] == val) {
return i;
}
}
int c = (int) ((Math.random() * (-(array.length - 1))) - 1);
return c;
}
public static int[] uniqueRand(int min, int max, int adet) {
int[] array = new int[adet];
int in;
int value;
for (int i = 0; i < adet; i++) {
do {
value = (int) ((Math.random() * (max - min)) + min);
in = Array.binarySearch(array, value);
} while (!(in < 0));
array[i] = value;
}
return array;
}
public static String toString(int[] a) {
return Arrays.toString(a);
}
public static void main(String args[]) {
int[] arr = Array.uniqueRand(10, 20, 8);
System.out.println(Array.toString(arr));
}
}
*********************************************************************
Cıktı:
run:
Array Lenght=8
Max=20;
Min=10;
[10, 12, 13, 18, 16, 15, 11, 17]
BUILD SUCCESSFUL (total time: 0 seconds)
20 Temmuz 2016 Çarşamba
18 Temmuz 2016 Pazartesi
14 Temmuz 2016 Perşembe
Entity FrameWork C#
Uzun en sql komutları yazmak yerine EntityFramework kullanarak ekleme,silme ve güncelleme işlemi daha az kodla cözüme kavuşturuldu....
MarketOtomasyonEntities db=new MarketOtomasyonEntities();//Veritabanımızın modelini oluşturduk
private void urun_ekle_Click(object sender, EventArgs e)
{
Urunler urun = new Urunler();//Urunler tablosunun bir modeli oluşturduk.Ekleme işlemi için gerekli kod aşağıda verilmiştir
urun.u_ad = "Kek";
urun.u_kod = "1234568";
urun.u_reyon_id = 2;
urun.u_resim = null;
db.Urunler.Add(urun);
db.SaveChanges();
}
private void urun_sil_Click(object sender, EventArgs e)
{
var silinecek = db.Urunler.Where(w => w.u_id == 1).FirstOrDefault();//silinecek veri alındı.
db.Urunler.Remove(silinecek);//Remove komutu veri silindi
db.SaveChanges();//Değişikliklerin kaydedilmesi için SaveChanges() metodunu çağırdık.
}
private void urun_guncelle_Click(object sender, EventArgs e)
{
var guncellenecek = db.Urunler.Where(w => w.u_id == 1).FirstOrDefault();//Değişiklik yapılacak veri alındı.
guncellenecek.u_kod = "010101";//değiştirilecek veri
db.SaveChanges();//Değişikliklerin kaydedilmesi için SaveChanges() metodunu çağırdık.
}
}
}
MarketOtomasyonEntities db=new MarketOtomasyonEntities();//Veritabanımızın modelini oluşturduk
private void urun_ekle_Click(object sender, EventArgs e)
{
Urunler urun = new Urunler();//Urunler tablosunun bir modeli oluşturduk.Ekleme işlemi için gerekli kod aşağıda verilmiştir
urun.u_ad = "Kek";
urun.u_kod = "1234568";
urun.u_reyon_id = 2;
urun.u_resim = null;
db.Urunler.Add(urun);
db.SaveChanges();
}
private void urun_sil_Click(object sender, EventArgs e)
{
var silinecek = db.Urunler.Where(w => w.u_id == 1).FirstOrDefault();//silinecek veri alındı.
db.Urunler.Remove(silinecek);//Remove komutu veri silindi
db.SaveChanges();//Değişikliklerin kaydedilmesi için SaveChanges() metodunu çağırdık.
}
private void urun_guncelle_Click(object sender, EventArgs e)
{
var guncellenecek = db.Urunler.Where(w => w.u_id == 1).FirstOrDefault();//Değişiklik yapılacak veri alındı.
guncellenecek.u_kod = "010101";//değiştirilecek veri
db.SaveChanges();//Değişikliklerin kaydedilmesi için SaveChanges() metodunu çağırdık.
}
}
}
13 Temmuz 2016 Çarşamba
Game Ball
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Game;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
/**
*
* @author ozaytunctan13
*/
public class GameBall extends JFrame implements ActionListener, MouseMotionListener {
private int ballxSpeed = 7;
private int ballySpeed = 5;
private int paddlex = 0;
private JPanel screen;
private int scren_w = 800;
private int scren_h = 600;
private Ball top;
private RectCollision rect;
private int Ball_x = 0;
private int Ball_y = 0;
private int Ball_w = 30;
private int Ball_h = 30;
private int Rect_x = scren_w / 2;
private int Rect_y = scren_h - 30;
private int Rect_w = 100;
private int Rect_h = 20;
private long ball_speed = 1000;
private boolean gameOver = false;
public void initialize() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLayout(null);
this.setTitle(GameBall.class.getName());
this.setBounds(200, 30, 800, 650);
this.setBackground(Color.blue);
this.setVisible(true);
screen = new JPanel();
this.setResizable(false);
screen.setSize(800, 600);
screen.setBackground(Color.BLACK);
this.add(screen);
Ball_x = (int) (screen.getSize().width) / 2;
this.addMouseMotionListener(this);
this.setLocationRelativeTo(null);
}
public GameBall(String title) {
this.setTitle(title);
initialize();
}
@Override
public void paint(Graphics g) {
super.paint(g);
top = new Ball(Ball_x, Ball_y, Ball_w, Ball_h);
rect = new RectCollision(paddlex, Rect_y, Rect_w, Rect_h);
Graphics fr = screen.getGraphics();
top.onDraw(fr);
Graphics fr2 = screen.getGraphics();
rect.onDraw(fr2);
//Collision();
}
public void update(Graphics gr) {
}
public void Collision() {
Ball_x = Ball_x + ballxSpeed;
Ball_y = Ball_y + ballySpeed;
// Window yukarı
if (Ball_x >= paddlex && Ball_x <= paddlex + 100 && Ball_y >= 475) {
ballySpeed = -7;
// score++;
}
if (Ball_y >= 800) {
// score = 0;
Ball_y = 30;
gameOver = true;
}
// Window aşağı
if (Ball_y <= 0) {
ballySpeed = 7;
}
// Window sağ
if (Ball_x >= 800) {
ballxSpeed = -5;
}
// Window sol
if (Ball_x <= 0) {
ballxSpeed = 5;
}
repaint();
}
@Override
public void actionPerformed(ActionEvent e) {
Collision();
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
//Rect sadece x yönünde hareket etmektedir width.
paddlex = e.getX() - 50;
repaint();
}
public static void main(String[] args) {
GameBall b = new GameBall("title");
Timer t = new Timer(30, b);
t.start();
}
}
/////////////////////////// Rect Class////////////////////////////////
public class RectCollision extends Rectangle{
private int Ball_x;
private int Ball_y;
private int Ball_w;
private int Ball_h;
public RectCollision(int x, int y, int width, int height) {
super(x, y, width, height);
Ball_x = x;
Ball_y = y;
Ball_w = width;
Ball_h = height;
}
public void onDraw(Graphics g) {
g.setColor(new Color(255,255,30));
g.drawRect(x, y, width, height);
g.fillRect(x, y, width, height);
}
}
////////////////////////////////////////Ball Class/////////////////////////////////////
public class Ball extends Rectangle {
private int Ball_x;
private int Ball_y;
private int Ball_w;
private int Ball_h;
public Ball(int x, int y, int width, int height) {
super(x, y, width, height);
Ball_x = x;
Ball_y = y;
Ball_w = width;
Ball_h = height;
}
public void onDraw(Graphics g) {
g.setColor(new Color(255,255,30));
g.drawOval(x, y, width, height);
g.fillOval(x, y, width, height);
}
public static void main(String[] args) {
JFrame f=new JFrame("Title");
f.setSize(500,500);
Ball b=new Ball(5,5,30,30);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
30 Haziran 2016 Perşembe
>>AudioPlayer>>
package open.sound;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import open.message.MessageBox;
import open.process.IOImageProcess;
import open.util.FileChoser;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import open.message.MessageBox;
import open.process.IOImageProcess;
import open.util.FileChoser;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class Ses {
AudioStream audio = null;
InputStream inputStream = null;
String path;
public Ses() {
}
Ses(String path) {
path = path;
}
Ses(InputStream inputSound) {
this.inputStream = inputSound;
}
public void Cal(String path) {
try {
inputStream = new FileInputStream(path);
if (inputStream.available() > 0) {
audio = new AudioStream(inputStream);
AudioPlayer.player.start(audio);
} else {
MessageBox.showMessage("Ses dosyası bulunamdı");
}
} catch (Exception e) {
}
}
public void Cal(){
String path=FileChoser.chose();
Cal(path);
}
public void kapat() {
try {
if (audio != null) {
AudioPlayer.player.stop(audio);
} else {
MessageBox.showMessage("Ses kapatılamadı");
}
} catch (Exception e) {
}
}
public static void main(String[] args) throws InterruptedException {
Ses ses = new Ses();
ses.Cal("C:\\Users\\ozaytunctan13\\Downloads\\Compressed\\2_wav_files (online-audio-converter.com)\\Java Video Tutorial - YouTube.wav");
Thread.sleep(4000);
ses.kapat();
}
}
29 Haziran 2016 Çarşamba
Arayüz
(Interface)
Java’da arayüz soyut sınıf yerine kullanılır, ama soyut sınıftan farklı ve daha kullanışlıdır. Arayüz kullanarak, bir sınıfın neler yapacağını belirlerken, onları nasıl yapacağını gizleyebiliriz. Arayüzün yapısı sınıfın yapısına benzerse de aralarında önemli farklar vardır.
- Arayüz ,interface anahtar sözcüğü ile tanımlanır. Arayüz abstract metotlar içerir.
- Arayüz, anlık (instance) değişkenler içeremez. Ancak, belirtkeleri konmamış olsa bile, arayüz içindeki değişkenler final ve static olur. Bu demektir ki, arayüzde tanımlanan değişkenler, onu çağıran sınıflar tarafından değiştirilemez.
- Arayüz, yalnızca public ve ön-tanımlı (dafault) erişim belirtkesi alabilir, başka erişim belirtkesi alamaz.
- public damgalı arayüz, public damgalı class gibidir. Her kod ona erişebilir.
- Erişim damgasız arayüz, erişim damgasız class gibidir. Bu durumda, arayüze, ait olduğu paket içindeki bütün kodlar ona erişebilir. Paket dışındaki kodlar erişemez.
- Arayüz, public erişim belirtkesi ile nitelenmişse, içindeki bütün metotlar ve değişkenler otomatik olarak public nitelemesine sahip olur.
- Bir sınıf birden çok arayüze çağırabilir (implement).
- Aynı arayüzü birden çok sınıf çağırabilir.
- Sınıftaki metotlar tam olarak tanımlıdır, ama arayüzde metotların gövdeleri yoktur. Onlar abstract metotlardır. Metodun tipi, adı, parametreleri vardır, ama gövde tanımı yoktur; yani yaptığı iş belirli değildir. Metotların gövdesi, o arayüzü çağıran sınıf içinde yapılır. Böylece bir metot, farklı sınıflarda farklı tanımlanabilir. Bu özelik, Java’da polymorphismi olanaklı kılan önemli bir niteliktir.
Arayüzün Yapısı
Arayüzün genel yapısı aşağıdaki gibidir. Erişim-belirtkesi ya public olur ya da hiç konmaz, o zaman default erişim etkin olur.
[erişim_belirtkesi] interface adı {
tip metot_adı_01 (parametre_listesi);
tip metot_adı_02 (parametre_listesi);
tip final değişken_adı_01 = değer_01;
tip final değişken_adı_02 = değer_01;
// …
tip metot_adı_N (parametre_listesi);
tip final değişken_adı_N = değer_N;
}
Örnek 1: Aşağıdaki arayüz iki tane metot içermektedir.
public interface arayuz01{
public void topla(int x, int y);
public void hacim(int x, int y, int z);
}
Örnek 2: Aşağıdaki arayüz iki tane sabit değişken içermektedir.
public interface arayuz02{
public static final double fiyat = 1250.00;
public static final int sayac = 5;
}
Örnek 3: Aşağıdaki sınıf, yukarıdaki iki arayüzü var etmektedir. Sınıf içinde, arayüzün metotlarının serbestçe tanımladığına dikkat ediniz. Aynı arayüzü var edecek başka sınıflar, bu metotları başka başka tanımlayabilirler. Bu, bir metodun farklı işler görmesini sağlar ve polymorphism diye bilinir.
import java.io.*;
class Deneme01 implements arayuz01, arayuz02{
public void topla(int x, int y){
System.out.println("x+y = " + (x+y));
}
public void hacim(int a, int b, int c){
System.out.println("Hacim = " + (a*b*c));
}
public static void main(String[] args){
Demo d01 = new Deneme01();
D01.topla(12,15);
D01.hacim(3,5,7);
}
}
Örnek 4:
interface Aryz {
void aryzMet(int param);
}
class Deneme02 implements Aryz {
// Implement Aryz's interface
public void aryzMet(int p) {
System.out.println("aryzMet metodu " + p + “ ile çağrılıyor. “ );
}
}
class Deneme03 implements Aryz {
// Implement Aryz's interface
public void aryzMet(int p) {
System.out.println("aryzMet metodu " + p + “ ile çağrılıyor. “ );
}
void insMet() {
System.out.println("Arayüzü çağıran sınıf, istenirse " +
"başka öğeler de tanımlayabilir.");
}
}
class Deneme04 {
public static void main(String args[]) {
Aryz d04 = new Deneme02();
d04.aryzMet(23);
}
}
class Deneme05 implements Aryz {
// Implement Aryz's interface
public void aryzMet(int p) {
System.out.println("Başka bir aryzMet");
System.out.println("p nin karesi = " + (p*p));
}
}
class Deneme06 {
public static void main(String args[]) {
Aryz c = new Deneme02();
Deneme05 d05 = new Deneme05();
c.aryzMet(23);
c = d05; // c şimdi Deneme05’in bir nesnesini işaret ediyor
c.aryzMet(23);
}
}
Örnek 4: Aşağıdaki sınıf Aryz arayüzünü çağırıyor, ama onun metotlarını tanımlamıyor. Dolayısıyla soyut bir sınıftır, önüne abstract nitelemesi konmalıdır.
abstract class EksikClass implements Aryz {
int a, b;
void show() {
System.out.println(a + " " + b);
}
// ...
}
Örnek 5: Aşağıdaki örnek, interface kullanarak bir stack oluşturmaktadır.
// Define an integer stack interface.
interface IntStack {
void push(int item); // store an item
int pop(); // retrieve an item
}
// An implementation of IntStack that uses fixed storage.
class FixedStack implements IntStack {
private int stck[];
private int tos;
// allocate and initialize stack
FixedStack(int size) {
stck = new int[size];
tos = -1;
}
// Push an item onto the stack
public void push(int item) {
if(tos==stck.length-1) // use length member
System.out.println("Stack is full.");
else
stck[++tos] = item;
}
// Pop an item from the stack
public int pop() {
if(tos < 0) {
System.out.println("Stack underflow.");
return 0;
}
else
return stck[tos--];
}
}
class IFTest {
public static void main(String args[]) {
FixedStack mystack1 = new FixedStack(5);
FixedStack mystack2 = new FixedStack(8);
// push some numbers onto the stack
for(int i=0; i<5; i++) mystack1.push(i);
for(int i=0; i<8; i++) mystack2.push(i);
// pop those numbers off the stack
System.out.println("Stack in mystack1:");
for(int i=0; i<5; i++)
System.out.println(mystack1.pop());
System.out.println("Stack in mystack2:");
for(int i=0; i<8; i++)
System.out.println(mystack2.pop());
}
}
Örnek 6: Aşağıdaki örnek gerektikçe artabilen bir stack oluşturuyor.
// Implement a "growable" stack.
class DynStack implements IntStack {
private int stck[];
private int tos;
// allocate and initialize stack
DynStack(int size) {
stck = new int[size];
tos = -1;
}
// Push an item onto the stack
public void push(int item) {
// if stack is full, allocate a larger stack
if(tos==stck.length-1) {
int temp[] = new int[stck.length * 2]; // double size
for(int i=0; i<stck.length; i++) temp[i] = stck[i];
stck = temp;
stck[++tos] = item;
}
else
stck[++tos] = item;
}
// Pop an item from the stack
public int pop() {
if(tos < 0) {
System.out.println("Stack underflow.");
return 0;
}
else
return stck[tos--];
}
}
class IFTest2 {
public static void main(String args[]) {
DynStack mystack1 = new DynStack(5);
DynStack mystack2 = new DynStack(8);
// these loops cause each stack to grow
for(int i=0; i<12; i++) mystack1.push(i);
for(int i=0; i<20; i++) mystack2.push(i);
System.out.println("Stack in mystack1:");
for(int i=0; i<12; i++)
System.out.println(mystack1.pop());
System.out.println("Stack in mystack2:");
for(int i=0; i<20; i++)
System.out.println(mystack2.pop());
}
}
Örnek 6: Aşağıdaki örnek, bir interface değişkeni yardımıyla, daha önce tanımlanan FixedStack ve DynStack sınıflarına erişmektedir.
/* Create an interface variable and
access stacks through it.
*/
class IFTest3 {
public static void main(String args[]) {
IntStack mystack; // create an interface reference variable
DynStack ds = new DynStack(5);
FixedStack fs = new FixedStack(8);
mystack = ds; // load dynamic stack
// push some numbers onto the stack
for(int i=0; i<12; i++) mystack.push(i);
mystack = fs; // load fixed stack
for(int i=0; i<8; i++) mystack.push(i);
mystack = ds;
System.out.println("Values in dynamic stack:");
for(int i=0; i<12; i++)
System.out.println(mystack.pop());
mystack = fs;
System.out.println("Values in fixed stack:");
for(int i=0; i<8; i++)
System.out.println(mystack.pop());
}
}
Örnek 7: Aşağıdaki örnek, interface içinde değişken kullanılışını göstermektedir.
import java.util.Random;
interface SharedConstants {
int NO = 0;
int YES = 1;
int MAYBE = 2;
int LATER = 3;
int SOON = 4;
int NEVER = 5;
}
class Question implements SharedConstants {
Random rand = new Random();
int ask() {
int prob = (int) (100 * rand.nextDouble());
if (prob < 30)
return NO; // 30%
else if (prob < 60)
return YES; // 30%
else if (prob < 75)
return LATER; // 15%
else if (prob < 98)
return SOON; // 13%
else
return NEVER; // 2%
}
}
class AskMe implements SharedConstants {
static void answer(int result) {
switch(result) {
case NO:
System.out.println("No");
break;
case YES:
System.out.println("Yes");
break;
case MAYBE:
System.out.println("Maybe");
break;
case LATER:
System.out.println("Later");
break;
case SOON:
System.out.println("Soon");
break;
case NEVER:
System.out.println("Never");
break;
}
}
public static void main(String args[]) {
Question q = new Question();
answer(q.ask());
answer(q.ask());
answer(q.ask());
answer(q.ask());
}
}
Örnek 8: Aşağıdaki örnek, sınıflarda olduğu gibi, arayüzlerin de alt-arayüzlerinin yaratılabileceğini göstermektedir.
// One interface an extend another.
interface A {
void meth1();
void meth2();
}
// B now includes meth1() and meth2() -- it adds meth3().
interface B extends A {
void meth3();
}
// This class must implement all of A and B
class MyClass implements B {
public void meth1() {
System.out.println("Implement meth1().");
}
public void meth2() {
System.out.println("Implement meth2().");
}
public void meth3() {
System.out.println("Implement meth3().");
}
}
class IFExtend {
public static void main(String arg[]) {
MyClass ob = new MyClass();
ob.meth1();
ob.meth2();
ob.meth3();
}
}
Kaydol:
Yorumlar (Atom)
