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();
  }
}

7 Haziran 2016 Salı

Java ile basit bir Icecek listesi Arayüzü




package test.io;

/**
 *
 * @author ozaytunctan13
 */
public class Icecekler {

    double satisTop = 0;

    public Icecekler() {
        satisTop = 0;
    }

    Icecekler(Icecek c, int adet) {
        for (Icecek icecek : Icecek.values()) {
            if (icecek == c) {
                this.satisTop += icecek.getFiyat() * adet;
                return;
            }

        }
        System.out.println("Tanımlı Icecek bulunamadı");
    }

    void IcecekSatis(Icecek c, int adet) {
        hesapla(c, adet);
    }

    double toplamSatisTutari() {
        return this.satisTop;
    }

    private void hesapla(Icecek c, int adet) {
        for (Icecek icecek : Icecek.values()) {
            if (icecek == c) {
                this.satisTop += icecek.getFiyat() * adet;
                return;
            }

        }
        System.out.println("Tanımlı Icecek bulunamadı");
    }

    public void IcecekFiyatGuncelle(Icecek c, double fiyat) {
        for (Icecek icecek : Icecek.values()) {
            if (icecek == c) {
                icecek.setFiyat(fiyat);
                return;
            }
        }
    }

    public double IcecekFiyati(Icecek c) {
        for (Icecek icecek : Icecek.values()) {
            if (icecek == c) {
                return icecek.getFiyat();
            }
        }
        return 0.0;
    }

    enum Icecek {

        Cola(3.75), Cay(0.75), Coffee(4.0), Sut(2.70);
        private double fiyat;

        private Icecek(double fiyat) {
            this.fiyat = fiyat;
        }

        private Icecek() {
            this.fiyat = 0.0;
        }

        double getFiyat() {
            return fiyat;
        }

        void setFiyat(double fiyat) {
            this.fiyat = fiyat;
        }
    }

    public static void main(String[] args) {
        Icecekler ic = new Icecekler();

        ic.IcecekSatis(Icecekler.Icecek.Cay, 2);
        ic.IcecekSatis(Icecekler.Icecek.Coffee, 1);
        ic.IcecekFiyatGuncelle(Icecek.Sut, 5);
        ic.IcecekSatis(Icecekler.Icecek.Sut, 3);
        System.out.println(ic.toplamSatisTutari());
    }
}

4 Mart 2016 Cuma

VHDL FULL ADDER

VHDL FULL ADDER PROGRAMİNG SOURCE CODE 
----------------------------------------------------------------------------------
-- Company: Siirt Üniversty
-- Engineer: Ozay tunctan bil.Müh
-- Create Date:    14:19:47 03/04/2016 
-- Design Name: Full adder
-- Module Name:    AND_KAPISI - Behavioral 
-- Project Name: full adder
-- Target Devices: 
-- Tool versions: 
-- Description: 
-- Dependencies: 
-- Revision: 1.5
-- Revision 0.01 - File Created
-- Additional Comments: 
----------------------------------------------------------------------------------
-----And kapısı Tasarımı
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity AND_KAPISI is
port(ve_g1:in std_logic;
     ve_g2:in std_logic;
     ve_cikis:out std_logic);
end AND_KAPISI;
architecture veriAkisi of AND_KAPISI is
begin
process(ve_g1,ve_g2)
begin
ve_cikis<=ve_g1 and ve_g2;
end process;
end veriAkisi;
----------------------------------------------------------------------------------------
----xor kapısı tasırımı
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity XOR_KAPISI is
port(xor_g1:in std_logic;
     xor_g2:in std_logic;
     xor_cikis:out std_logic);
end XOR_KAPISI;
architecture veriAkisi of XOR_KAPISI is
begin
process(xor_g1,xor_g2)
begin 
xor_cikis<=xor_g1 xor xor_g2;

end process;
end veriAkisi;


---------------------------------------------------------------------------------------
----Veya kapısı tasırımı
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity VEYA_KAPISI is
port(veya_g1:in std_logic;
     veya_g2:in std_logic;
     veya_cikis:out std_logic);
end VEYA_KAPISI;
architecture veriAkisi of VEYA_KAPISI is
begin
process(veya_g1,veya_g2)
begin 
veya_cikis<=veya_g1 or veya_g2;

end process;
end veriAkisi;
----------------------------------------------------------------------------------------
---half adder yarı toplayıcı devresi tasarımı
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity YARI_TOPLAYICI is
port(yt_g1:in std_logic;
     yt_g2:in std_logic;
     yt_elde:out std_logic;
 yt_toplam:out std_logic);
end YARI_TOPLAYICI;
architecture yapisal of YARI_TOPLAYICI is
component AND_KAPISI is
port(ve_g1:in std_logic;
     ve_g2:in std_logic;
     ve_cikis:out std_logic);
end component;
component XOR_KAPISI is
port(xor_g1:in std_logic;
     xor_g2:in std_logic;
     xor_cikis:out std_logic);
end component;
begin 
block1:AND_KAPISI port map(ve_g1=>yt_g1,ve_g2=>yt_g2,ve_cikis=>yt_elde);
block2:XOR_KAPISI port map(xor_g1=>yt_g1,xor_g2=>yt_g2,xor_cikis=>yt_toplam);
end yapisal;
-----------------------------------------------------------------------------------------------------
-----Tam toplayıcı devresinin tasarımı
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity TAM_TOPLAYICI is
port(tt_g1:in std_logic;
     tt_g2:in std_logic;
 tt_Cin:in std_logic;
 tt_elde:out std_logic;
 tt_toplam:out std_logic
    );
end TAM_TOPLAYICI;
architecture yapisal of TAM_TOPLAYICI is
component YARI_TOPLAYICI is
port(yt_g1:in std_logic;
     yt_g2:in std_logic;
     yt_elde:out std_logic;
 yt_toplam:out std_logic);
end component;
component VEYA_KAPISI is
port(veya_g1:in std_logic;
     veya_g2:in std_logic;
     veya_cikis:out std_logic);
end component;
signal ve_signal:std_logic;
signal xor_signal:std_logic;
signal yt_signal:std_logic;
begin
Block1:YARI_TOPLAYICI port map(yt_g1=>tt_g1,yt_g2=>tt_g2,yt_elde=>ve_signal,yt_toplam=>xor_signal);
Block2:YARI_TOPLAYICI port map(yt_g1=>xor_signal,yt_g2=>tt_Cin,yt_elde=>yt_signal,yt_toplam=>tt_toplam);
Block3:VEYA_KAPISI port map(veya_g1=>ve_signal,veya_g2=>yt_signal,veya_cikis=>tt_elde);
end yapisal;







26 Şubat 2016 Cuma

c# Dynamic Frame Design

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using FreeCodeLibrary;
namespace OgrenciOtomasyon
{
    class FrameState:Form
    {

        TextBox mX, mY;
        private string v;
        public FrameState(string v)
        {
            this.v = v;
            this.Text = v.ToString();
            SetBounds(45,20,500,500);
            this.Show();
            this.BackColor = Color.Gainsboro;
            Panel pane = new Panel();
            Button oku = new Button();
            oku.FlatStyle = FlatStyle.Popup;
            oku.BackColor = Color.Yellow;
            oku.Text =" Biz  C# ";
            oku.MouseClick += oku_MouseClick;
            pane.MouseMove += pane_MouseMove;
            mX = new TextBox();
            mY = new TextBox();
            mX.SetBounds(30, 60, 100, 100);
            mY.SetBounds(30, 90, 100, 100);
            pane.Controls.Add(mX);
            pane.Controls.Add(mY);
            oku.SetBounds(30,30,80,20);
            pane.BorderStyle=System.Windows.Forms.BorderStyle.Fixed3D;
            pane.SetBounds(50,50,200,200);
            pane.Controls.Add(oku);
            pane.BackColor = Color.LightCyan;
            this.Controls.Add(pane);
        }
        private void oku_MouseClick(Object sender, MouseEventArgs e)
        {
             MessageBox.Show(Cmath.Sum(5,6,7,5,8).ToString());
         
        }
        private void pane_MouseMove(Object sender, MouseEventArgs e)
        {
            mX.Text = e.X.ToString();
            mY.Text = e.Y.ToString();
        }
    }
}

22 Şubat 2016 Pazartesi

Java ImageProcess

Cmatrix cm=Cmatrix.getInstance();
Static bir classtır.Image üzerinde Morfolojik işlemler yapılabilmektedir.Image'nin  Histogramı cıkarma ,Plot ,Döndürme acısı ,EdgeCanny( Kenar bulma),Thresold vb işlemler yapılabilmektedir.
Nokta rotasyonu ile
main{
 CMatrixcm=CMatrix.getInstance().imread().imshow().imhist().imshow().imrotate(180).imshow().edgeDetectionCanny().imshow();
}
Ekran Cıktısı(Logcat):

21 Şubat 2016 Pazar

Java RgbColor

Uğraşma sonucu Allahın lutfuyla Güzel bir Uygulama oldu.
Bu uygulama asıl amac renklerin butun tonlarını bir panele verebilmekti.Ve sonunda başarabildik.
public class ColorFrame extends JFrame implements ChangeListener {

    JPanel renkPane;
    JPanel rgbPane;
    JSlider s1;
    JSlider s2;
    JSlider s3;
    int r, g, b;

    public ColorFrame(String title) {
        super(title);
        renkPane = new JPanel();
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        s1 = new JSlider(0, 255);
        s1.setPaintTicks(true);
        s1.setForeground(Color.red);
        s1.setMinorTickSpacing(5);
        s1.setMajorTickSpacing(5);
        s2 = new JSlider(0, 255);
        s2.setForeground(Color.GREEN);
        s2.setPaintTicks(true);
        s2.setMinorTickSpacing(5);
        s2.setMajorTickSpacing(5);
        s3 = new JSlider(0, 255);
        s3.setPaintTicks(true);
        s3.setForeground(Color.BLUE);
        s3.setMinorTickSpacing(5);
        s3.setMajorTickSpacing(5);
        renkPane = new JPanel();
        rgbPane = new JPanel();
        s1.addChangeListener(this);
        s2.addChangeListener(this);
        s3.addChangeListener(this);
        renkPane.setSize(100, 100);
        renkPane.setLayout(new BoxLayout(renkPane, BoxLayout.Y_AXIS));
        renkPane.setBorder(new EtchedBorder(Color.lightGray, Color.RED));
        rgbPane.setBorder(new EtchedBorder(Color.lightGray, Color.RED));
        this.setSize(500, 500);
        renkPane.add(s1);
        renkPane.add(s2);
        renkPane.add(s3);
        renkPane.add(rgbPane);
        this.add(renkPane);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        ColorFrame fr = new ColorFrame("Color Frame");
    }

    @Override
    public void stateChanged(ChangeEvent e) {
        if (e.getSource() == s1) {
            r = (int) s1.getValue();
            g = (int) s2.getValue();
            b = (int) s3.getValue();
            rgbPane.setBackground(new Color(r, g, b));
            repaint();
        } else if (e.getSource() == s2) {
            r = (int) s1.getValue();
            g = (int) s2.getValue();
            b = (int) s3.getValue();
            rgbPane.setBackground(new Color(r, g, b));
            repaint();
        } else {
            r = (int) s1.getValue();
            g = (int) s2.getValue();
            b = (int) s3.getValue();
            rgbPane.setBackground(new Color(r, g, b));
            repaint();
        }
    }
}
Ekran cıktısı :