105-) Java’da Desing Patter Superiority

package designpatterns;

import java.util.ArrayList;

class Node {
Node SuperiorNode =new Node();
}

class calisan{
String isim;
calisan yonetici;
public calisan(){}
public calisan(String isim){
this.isim = isim;
}
}

class yonetici extends calisan{
ArrayList <calisan> altlari = new ArrayList<calisan>();
public yonetici(String isim){
super(isim);
}
public void addCalisan(calisan alt){
altlari.add(alt);
alt.yonetici = this;
}
}
public class DesignPatterns {

public static void main(String[] args) {
yonetici ali = new yonetici("ali");
calisan veli = new calisan("veli");
calisan ahmet = new calisan("ahmet");
ali.addCalisan(ahmet);
ali.addCalisan(veli);
System.out.println("Ahmetin yoneticiisi"+ahmet.yonetici.isim);
System.out.println("Veli'in yoneticiisi"+veli.yonetici.isim);
System.out.println("alinin calisanlari 0." + ali.altlari.get(0).isim +
" 1. "+ ali.altlari.get(1).isim);
System.out.println("alinin kaç çalışanı var? "+ ali.altlari.size());

}

}

 

104-) Java’da Desing Pattern

import java.util.ArrayList;
// designpatterns Abstract - Occurence
// soyut ve somut bilgiler arasındaki yapı.
// 1 dizinin 1 den fazla bölümü
// 1 şirketin 1 den fazla çalışanı,vb yapılarda.
// genellikle abstract lardan occurencelara bağlantı yapılır. (hesa ilişkisi gibi.)
  class dizi{
    String isim;
    String yapimci;
    ArrayList <bolum> bolumler =
        new ArrayList<bolum>();
        void bolumEkle(bolum b){
          bolumler.add(b);
        }
  }
  class bolum{
    String bolumIsmi;
    int bolumNumarasi;
    public bolum(String bolumIsmi, int bolumNumarasi){
      this.bolumIsmi = bolumIsmi;
      this.bolumNumarasi = bolumNumarasi;
    }
  }
  public class Main {  // designpatterns
  public static void main(String[] args) 
    {
      dizi dizi1= new dizi();
      dizi1.isim = "the100";
      dizi1.bolumEkle( new bolum("Pilot",1));
      dizi1.bolumEkle( new bolum("TheSky",2));
    }
  

}

 

102-) Anlık Mesajlaşma Programı (Socket Programlama)

// Bu kodların çalışabilmesi için Java’da 2 ayrı proje oluşturulmalıldır.

//1.projenin adı Server. Kendi içerisinde 2 adet .java uzantılı classı barındırmaktadır.

//Kodları

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Server extends JFrame{
  
  private JTextField userText;
  private JTextArea chatWindow;
  // 2 bilgisayar arasındaki akışin olması için kullanılacaktır.
  private ObjectOutputStream output;
  private ObjectInputStream input;
  private ServerSocket server;
  private Socket connection;
  
  //constructor
  public Server()
  {
    super("Mesajlasma Programı");
    userText = new JTextField();
    userText.setEditable(false);
    userText.addActionListener(
        new ActionListener(){
          public void actionPerformed(ActionEvent event){
            sendMessage(event.getActionCommand());
            userText.setText("");
          }
        }
    );
    add(userText, BorderLayout.NORTH);
    chatWindow = new JTextArea();
    add(new JScrollPane(chatWindow));
    setSize(300,150);
    setVisible(true);
  }
  
  //set up and run the server
  public void startRunning(){
    try{
      server = new ServerSocket(6789, 100); //port number and kaç kişinin bağlanacağı 100 kişi 
      while(true){
        try{
          //connect and have conversation
          waitForConnection(); //start up
          setupStreams(); // bağlantı sonrası veri akışına başla
          whileChatting(); // yazışma kısmı
        }catch(EOFException eofException){ //serverda yada bağlantıda sorun var.
          showMessage("\n Ana Sunucu Bağlantıyı Sonlandırdı! ");
        }finally{
          closeCrap(); //clean house staff
        }
      }
    }catch(IOException ioException){
      ioException.printStackTrace();
    }
  }
  // Bağlantı bilgilerinin gelmesi için bekle
  private void waitForConnection() throws IOException{
    showMessage("Bağlantı için bir kullanıcın daha sisteme girmesi gerekiyor..\n");
    connection = server.accept(); //herhangi bir pc bağlandığında ve server bağlantıyı kabul ettiğinde.
    showMessage(" Now connected to " + connection.getInetAddress().getHostName()); 
  }
  // get stream to send and receive data
  private void setupStreams() throws IOException{
    output = new ObjectOutputStream(connection.getOutputStream());
    output.flush();
    input = new ObjectInputStream(connection.getInputStream());
    showMessage("\n Veri Akışı Başlayabilir! \n");
  }
  //  During the chat conversation
  private void whileChatting() throws IOException{
    String message = "Bağlandı";
    sendMessage(message);
    ableToType(true);
    do{
      //have a conversation
      try{
        message = (String) input.readObject();
        showMessage("\n" + message);
      }catch(ClassNotFoundException classNotFoundException){
        showMessage("\n Alınan veri okunamadı");
      }
    }while(!message.equals("Diğer kullanıcı bağlantıdan koptu")); //KULLANAN kişi END dediğinde konuşma biter.
  }
  // konuşma sonlandırıldığınında bağlantıyı ve soketi kapat.
  private void closeCrap(){
    showMessage("\n Bağlantı sonlanıyor..\n");
    ableToType(false);
    try{
      output.close(); // veri çıkışını kapat
      input.close(); // veri girişini kapat. 
      connection.close(); //socket'i kapat.
    }catch(IOException ioException){
      ioException.printStackTrace();
    }
    
  }
  // send a message to client
  private  void sendMessage(String message){
    try{
      output.writeObject("SERVER - " + message);
      output.flush();
      showMessage("\n SERVER - "+ message);
    }catch(IOException ioException){
      chatWindow.append("\n Hata-Veri gönderilemiyor");
    }
  }
  // updates chatWindow
  private void showMessage(final String text){
    SwingUtilities.invokeLater(
        new Runnable(){
          public void run(){
            chatWindow.append(text);
          }
        }
      );
  }
  // let the user type stuff into their box
  private void ableToType (final boolean tof){
    SwingUtilities.invokeLater(
        new Runnable(){
          public void run(){
            userText.setEditable(tof);
          }
        }
      );
    
  }
  
}

Server Test

import javax.swing.JFrame;

  public class ServerTest {
    public static void main(String[] args) {
      Server sally = new Server();
      sally.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      sally.startRunning();
    }
  }

 

//2.projenin adı Client. Kendi içerisinde 2 adet .java uzantılı classı barındırmaktadır.

//Kodları

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Client extends JFrame{
  
  private JTextField userText;
  private JTextArea chatWindow;
  private ObjectOutputStream output;
  private ObjectInputStream input;
  private String message = "";
  private String serverIP;
  private Socket connection;
  
  //constructor
  public Client(String host){
    super("Client");
    serverIP = host;
    userText = new JTextField();
    userText.setEditable(false);
    userText.addActionListener(
        new ActionListener(){
        public void actionPerformed(ActionEvent event){
          sendMessage(event.getActionCommand());
          userText.setText("");
        }
      }
    );
    add(userText, BorderLayout.NORTH);
    chatWindow = new JTextArea();
    add(new JScrollPane(chatWindow));
    setSize(300, 200); //Ekran büyüklüğünü ayarla
    setVisible(true);
  }
  
  //connect to server
  public void startRunning(){
    try{
      connectToServer();
      setupStreams();
      whileChatting();
    }catch(EOFException eofException){
      showMessage("\n Kullanıcı bağlantıdan koptu");
    }catch(IOException ioException){
      ioException.printStackTrace();
    }finally{
      closeConnection();
    }
  }
  
  //verilen ip numarasındaki bilgisayara 6789 numaralı port üzerinden bağlan.
  private void connectToServer() throws IOException{
    showMessage("Bağlanmaya Çalışıyor... \n");
    connection = new Socket(InetAddress.getByName(serverIP), 6789);
    showMessage("Connection Established! Connected to: " + connection.getInetAddress().getHostName());
  }
  
  //veri akışını ayarla
  private void setupStreams() throws IOException{
    output = new ObjectOutputStream(connection.getOutputStream());
    output.flush();
    input = new ObjectInputStream(connection.getInputStream());
    showMessage("\n Veri akışı ayarlandır! \n");
  }
  
  //while chatting with server
  private void whileChatting() throws IOException{
    ableToType(true);
    do{
      try{
        message = (String) input.readObject();
        showMessage("\n" + message);
      }catch(ClassNotFoundException classNotFoundException){
        showMessage("Unknown data received!");
      }
    }while(!message.equals("Server kapandı"));	
  }
  
  //Close connection
  private void closeConnection(){
    showMessage("\n Bağlantı sonlandırılıyor!");
    ableToType(false);
    try{
      output.close();
      input.close();
      connection.close();
    }catch(IOException ioException){
      ioException.printStackTrace();
    }
  }
  
  //mesajı servera ilet
  private void sendMessage(String message){
    try{
      output.writeObject("CLIENT - " + message);
      output.flush();
      showMessage("\nCLIENT - " + message);
    }catch(IOException ioException){
      chatWindow.append("\n Bir hata meydana geldi!");
    }
  }
  
  // mesaj ekranını güncelle
  private void showMessage(final String message){
    SwingUtilities.invokeLater(
      new Runnable(){
        public void run(){
          chatWindow.append(message);
        }
      }
    );
  }
  
  //kullanıcıların mesaj yazmasına izin ver.
  private void ableToType(final boolean tof){
    SwingUtilities.invokeLater(
      new Runnable(){
        public void run(){
          userText.setEditable(tof);
        }
      }
    );
  }
}

import javax.swing.JFrame;

public class ClientTest {
  public static void main(String[] args) {
    Client charlie;
    charlie = new Client("127.0.0.1");
    charlie.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    charlie.startRunning();
  }
}

//Kodlar yazıldıktan sonra 2 projede ayrı ayrı çalıştırılmalıdır.

// 2 projede 127.0.0.1(local ip) ip numaralı bilgisayın 6789 numaralı porttu  üzerinden anlık mesajlaşabileceklerdir.

//Örnek farklı bir ip ile farklı bilgisayarlarda denenebilir.

 

101-)Web Browser Örneği

import javax.swing.JFrame;
public class ana_class {
    public static void main(String[] args) {
      diger tarayici = new diger();
      tarayici.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   
    }
}

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;


public class diger extends JFrame{
  private JTextField addressBar;
  private JEditorPane display;
  
  //constructor
  public diger(){
    super("Tarayıcı Başlığı");
    
    addressBar = new JTextField("URL adresi girin!");
    addressBar.addActionListener(
        new ActionListener(){
          public void actionPerformed(ActionEvent event){
            loadCrap(event.getActionCommand());
            
          }
        }
        );
    add(addressBar,BorderLayout.NORTH); //ekranın sağ ust koşesinde
    
    display = new JEditorPane();
    display.setEditable(false);
    display.addHyperlinkListener(
        new HyperlinkListener(){
          public void hyperlinkUpdate(HyperlinkEvent event){
            // kullanıcı ekrana tıkladığında...
            if(event.getEventType()==HyperlinkEvent.EventType.ACTIVATED){
              loadCrap(event.getURL().toString());
            }
          }
        }
    );
    add(new JScrollPane(display),BorderLayout.CENTER);
    //JScrollPane'i JFrame'e ekle.
    setSize(500,300);
    setVisible(true);
  }
  private void loadCrap(String userText){
    try{
      // çalıştırma kısmı
      display.setPage(userText);
      addressBar.setText(userText);
    }catch(Exception e){
      System.out.println("Çalışmadı!Lütfen geçerli bir adres girin. Örnek http://www.javayaz.com ");
    }
  }

}

 

100-) Java’da Thread Kullanımı

public class ana_class {
    public static void main(String[] args) {
      
        Thread t1 = new Thread(new diger("bir"));
        Thread t2 = new Thread(new diger("iki"));
        Thread t3 = new Thread(new diger("üç"));
        Thread t4 = new Thread(new diger("dört"));
      
        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}

import java.util.*;

//Runnable interface contains run() method
// Video yükle ve izle gibi.
// Thread için Runnable implements edilmeli.
public class diger implements Runnable{
    String name;
    int time;
    Random r = new Random();
    
    public diger(String x){
        name = x;
        time = r.nextInt(999); //between 0-1 second
    }
    
    //this runs when you start thread
    public void run(){
        try{
            System.out.printf("%s . numaralı threet, %d sanise uyuduktan sonra çalıştı\n", name, time);
            Thread.sleep(time); //Thread'in ne kadar uyumasını istersin?
            System.out.printf("%s thread işini tamamladı\n", name);
        }catch(Exception e){}
    }
}

Örnek Ekran çıktısı

üç . numaralı threet, 665 sanise uyuduktan sonra çalıştı
iki . numaralı threet, 726 sanise uyuduktan sonra çalıştı
bir . numaralı threet, 448 sanise uyuduktan sonra çalıştı
dört . numaralı threet, 244 sanise uyuduktan sonra çalıştı
dört thread işini tamamladı
bir thread işini tamamladı
üç thread işini tamamladı
iki thread işini tamamladı

99-) Java’da Scroll Bar Kullanımı

import java.awt.*; 
import javax.swing.*;

public class ana_class {
  public static void main(String[] args){
    
    TheWindow w = new TheWindow();
    // Programı kapatmak için gerekli...
    w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    w.setSize(300,400);
    w.setVisible(true);
  }
  
  
}	

import java.awt.*; 
import javax.swing.*;

public class DrawOval extends JPanel{
  
  private int d=10;
  
   public void paint(Graphics g){
     super.paint(g); //Super class olan JPanel
     g.fillOval(10,10,d,d);		 
   } 
  public void setD(int newD){
    d = (newD >= 0 ? newD : 10);
    repaint();
   }
  public Dimension getProferredSize(){
    return new Dimension(200,200);
  }
  public Dimension getMinimumSize(){
    return getMinimumSize();
  }
    
}

import java.awt.*; 
import javax.swing.*;
import javax.swing.event.*;


public class TheWindow extends JFrame{
  private JSlider slider;
  private DrawOval myPanel;
  
  public TheWindow(){
    super("Başlık");
    myPanel = new DrawOval();
    myPanel.setBackground(Color.ORANGE);
    //Slider horizon olsun 0 ile 200 arasında sayılar alsın.
    slider = new JSlider(SwingConstants.HORIZONTAL,0,200,10);
    //Aralık belirleme her 10 pixelde bir
    slider.setMajorTickSpacing(10);
    slider.setPaintTicks(true);
    //Ne zaman slider değiştirildiğinde
    slider.addChangeListener(
        new ChangeListener(){
          public void stateChanged(ChangeEvent e){
            myPanel.setD(slider.getValue()); //Hangi değer geldi ise o değeri slidera gönder.
          }
        }
                
    );
    add(slider, BorderLayout.SOUTH);
    add(myPanel, BorderLayout.CENTER);
  }
}

 

98-) Java’da GUI ve Appletler

import java.awt.*; 
import javax.swing.*;

public class ana_class extends JApplet
{
  private double toplam;
  
   public void init(){
    String ilksayi= JOptionPane.showInputDialog("ilk Sayıyı Girin!");
    String ikincisayi= JOptionPane.showInputDialog("İkinci Sayıyı Girin!");
    
    double s1 = Double.parseDouble(ilksayi);
    double s2 = Double.parseDouble(ikincisayi);
    
    toplam = s1+s2;
     
   }
   public void paint(Graphics g){
     super.paint(g);
     g.drawString("Toplam: " + toplam,50 ,80);
     
   }
}

Java’da Applet çalıştırmak için; Run->Run As->Java Applet seçeneklerini kullanmanız gerekir.

96-) Generic Method – compareTo

import java.util.*; // list kullanmak için gerekmekte.

public class ana_class
{
  // generic class
  public static void main(String[] args)
  {
    System.out.println(enbuyuk(44,542,21));
    System.out.println(enbuyuk("elma","armut","karpuz"));
    System.out.println(enbuyuk('m','z','a'));
    
  }
  //Sadece karşılaştırılabilir tipteki veriler burada kullanılabilir.
  // o nedenle extends Comparable edilmek zorunda.
  //karşılaştırılabilir olmak şartı ile her türlü generik veri kullanılabilir.
  //hem gerekik data ile çalışabilir hemde generik datayı return ettirebiliriz.
  public static <T extends Comparable<T>> T enbuyuk(T a,T b,T c)
  {
    T m = a;
    if(b.compareTo(a)>0)
      m = b;
    if(c.compareTo(m)>0)
      m = c;
    return m;
  }

}

 

95-) Generic Method Kullanımı

import java.util.*; // list kullanmak için gerekmekte.

public class ana_class {
  public static void main(String[] args){
    
    //(overloaded method) aynı işi faklı veri tiplerinde
    //yapıyorlarsa o durumlarda aynı isimde methodlar kullanılabilir.
    
    Integer[] sayilar = {1,2,3,4};
    Character[] harfler = {'a','b','c','d'};
    
    ekranaYaz(sayilar);
    ekranaYaz(harfler);
    
  }
  // generic method farklı methodlara gerek olmadan...
    // t = TypeParametre   T[] generic method
    // T gererictir 
    public static <T> void ekranaYaz(T[] x){
      for (T y: x)
        System.out.printf("%s ", y);
      System.out.println();
    }
    // dönen datada generic tipte
}