Browsed by
Category: Java

Java yazılım geliştirme

Android Material Design Floating Action Button Yapımı

Android Material Design Floating Action Button Yapımı

fab_button

Yapmak istediğimiz tam olarak yukarıdaki gibi liste kaydıkça kaybolup geri gelen bir buton 🙂

Android Studio için başlangıcımız şu şekilde.

build.gradle dosyası

dependencies {
    ..
    compile 'com.melnykov:floatingactionbutton:1.3.0'
    ..
}

activity_schedule_list.xml

<RelativeLayout .. xmlns:fab="http://schemas.android.com/apk/res-auto" >
    ...
    <com.melnykov.fab.FloatingActionButton android:id="@+id/add_schedule_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_add" fab:fab_colorNormal="@color/primary" fab:fab_colorPressed="@color/primaryDark" fab:fab_colorRipple="@color/primaryDark" android:layout_alignParentBottom="true" android:layout_marginBottom="44dp" />

     ...
</RelativeLayout>

Java Sınıfı

public class ActivityClass extends ActionBarActivity implements View.OnClickListener, AdapterView.OnItemClickListener {
private ListView scheduleListView;
    private TextView tvScheduleInfoText;
    private FloatingActionButton fab;
    private ImageButton actionButton;

     protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_schedule_list);

        ...

        scheduleListView = (ListView) findViewById(R.id.list);
        fab = (FloatingActionButton) findViewById(R.id.add_schedule_button);
        actionButton = (ImageButton) findViewById(R.id.add_schedule_button);

        scheduleListView.setOnItemClickListener(this);
        actionButton.setOnClickListener(this);
        fab.attachToListView(scheduleListView);

        ...

    }

    @Override
    public void onClick(View v)
    {
        if(v.getId() == actionButton.getId())
        {
            //Ne gerekiyorsa
        }
    }
    
}

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    ...
    <color name="primary">#009688</color>
    <color name="primaryDark">#00776A</color>
    ...
</resources>
Singleton Java Gerçeklemesi

Singleton Java Gerçeklemesi

1- Basit Java Singleton Modeli

public class Singleton {



   private static Singleton instance;



   private Singleton(){ }



   public static Singleton getInstance( )
   {
      if(instance== null)
         instance= new Singleton();



      return instance;
   }



   protected static void doSmt( ) {
      System.out.println("Singleton Metod");
   }
}



public class SingletonDemo {
   public static void main(String[] args) {
      Singleton singleton = Singleton.getInstance( );
      singleton.doSmt( );
   }
}
Java – Android SHA-2 ile Dosya Hash Fonksiyonu

Java – Android SHA-2 ile Dosya Hash Fonksiyonu

public String computeHash(byte[] input)
throws NoSuchAlgorithmException, UnsupportedEncodingException
{
    MessageDigest digest = MessageDigest.getInstance("SHA-256");
    digest.reset();



    byte[] byteData = digest.digest(input);
    StringBuffer sb = new StringBuffer();



    for (int i = 0; i < byteData.length; i++)
    {
        sb.append(Integer.toString((byteData[i] 0xff) + 0x100, 16).substring(1));
    }
    return sb.toString();
}
Android – Java MD5 String Hash Fonksiyonu

Android – Java MD5 String Hash Fonksiyonu

public String md5(String message)
{
    String messageHash = "";
    try
    {
       // Create MD5 Hash
       MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
       digest.update(message.getBytes());
       byte messageDigest[] = digest.digest();



       // Create Hex String
       StringBuffer hexString = new StringBuffer();
       for (int i = 0; i < messageDigest.length; i++) {
           String h = Integer.toHexString(0xFF  messageDigest[i]);
           while (h.length() < 2)
           h = "0" + h;
           hexString.append(h);
       }
       messageHash  = hexString.toString();
           

    }
    catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
    }
     
     return messageHash;
}
Java/Android XML Dokümanı Oluşturma

Java/Android XML Dokümanı Oluşturma

XML dökümanı oluşturmak için 3 farklı yola ve bu yolların artılarına ve eksilerine bakalım.

1- DOM Kütüphanesi ile XML Dokümanı Yaratma

DOM nesnesi kullanarak XML etiketlerini ve elemanlarını yazdırabiliriz. Nisbeten daha güvenilir bir yöntem. Sadece başlıkların, etiketlerin, elemanların isimlerini vermeniz yeterlidir.

-Değişikliğe elverişli bir yapısı vardır.

-Değişkenleri kullanamk daha kolay

-Çok fazla nesne oluşturmak gerekir

-Nesne kullanımının fazlalığından dolayı, geniş çaptaki XML dosyalarının yaratılmasında performans düşüktür.

Örnek:

public static void DOMXML_(String ogrNo,String ogrIsim,
 String ogrTC, String ogrSinif) throws Exception {
	Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
	// OgrenciBilgiler Oluşturuldu
	Element root = doc.createElement("OgrenciBilgiler");
	doc.appendChild(root);
	root.setAttribute("TC Kimlik", ogrTC);



	//  etiketi yaratma
	Element ogrenciNo = doc.createElement("Numara");
	root.appendChild(ogrenciNo);
	// içerik girişi
	ogrenciNo.setTextContent(ogrNo);



	//  etiketi yaratma
	Element ogrenciIsim = doc.createElement("Isim");
	root.appendChild(ogrenciIsim);
	//içerik girişi
	ogrenciIsim.setTextContent(ogrIsim);



	// <Sınıfı> Etiketi
	Element ogrenciSinif = doc.createElement("Sınıfı");
	root.appendChild(ogrenciSinif);
	//içerik girişi
	ogrenciSinif.setTextContent(ogrSinif);



	doc.normalize();
	//dokümanı kapatma 



	// output formaı ayarlama
	TransformerFactory transformerFactory = TransformerFactory.newInstance();
	Transformer transformer = transformerFactory.newTransformer();
	transformer.setOutputProperty(OutputKeys.METHOD, "xml");
	transformer.setOutputProperty(OutputKeys.INDENT, "yes");



	// print xml-Document
	transformer.transform(new DOMSource(doc),
	new StreamResult(new FileWriter(Adres)));//yazdırılacak adresi girin
	//mesela Adres="/mnt/sdcard/KlasorMlasoy/xmlfile.xml"



}

2-XML Serializer ile XML Dosyası Yaratmak(Basit ve Verimli)

Sadece iki nesne ile etiketleri hiyerarşik bir şekilde açıp kapatma mantığına dayanır.

-Sadeceiki nesne kullanılır

-Performans daha iyi

Örnek:

public static String XMLSerializer_(String ogrNo,String ogrIsim,
 String ogrTC, String ogrSinif) throws Exception {



	XmlSerializer xmlSerializer = Xml.newSerializer();
	StringWriter yazici = new StringWriter();



	xmlSerializer.setOutput(yazici);
	// Doküman başlangıcı
	xmlSerializer.startDocument("UTF-8", true);
	// Etiket aç "OgrenciBilgiler"
	xmlSerializer.startTag("", "OgrenciBilgiler");
	// Eleman ekle "Ogrenci Bilgiler"
	xmlSerializer.attribute("", "TC Kimlik", ogrTC);



	xmlSerializer.startTag("", "Numara");
	xmlSerializer.text(ogrNo);
	xmlSerializer.endTag("", "Numara");
	// Etiket aç "Isim"
	xmlSerializer.startTag("", "Isim");
	xmlSerializer.text(study.mTopic);
	// Etiket Kapa "Isim"
	xmlSerializer.endTag("", "Isim");



	// etiket açıldı "Sınıfı"
	xmlSerializer.startTag("", "Sınıfı");
	xmlSerializer.text(ogrSinif);
	// etiket kapandı "Sınıfı"
	xmlSerializer.endTag("", "Sınıfı");



	//Baştaki Açılan Etiketin sonu
	xmlSerializer.endTag("", "Ogrenci Bilgiler");



        //Formatlı biçimde yazdırma, bunu yazmazsanız hepsini bir satıra basarsınız
        xmlSerializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);



        // DOCUMENT Dokümanın sonu
	xmlSerializer.endDocument();



	return yazici.toString();
}

3- El ile XML Dosyası Yaratma (Pek Tercih Edilmez)

Bütün kodun stringler şeklinde yazılması.

-Burada Tek bir hata ile XML dosyası doğru şekilde yaratılmaz.

-Büyük çaptaki XML dosyaları için hata bulunması ve düzeltilmesi uğraştırır.

-Yazımı kolay

-Fazladan Nesne yaratmaya gerek yoktur.

Örnek:

public static String DuzXMLString ogrNo,String ogrIsim, String ogrTC, String ogrSinif) {
	String format =
			"<!--?xml version='1.0' encoding='UTF-8'?-->" +
			""+
			"	" + ogrNo + "" +
			"		" + ogrIsim + "" +
			"		<Sınıfı>" + ogrSinif + "" +
			"";



	return format
}

Yukarıda yazılan bütün kodlarda çıktı da şu şekilde görünmeli:

<!--?xml version='1.0' encoding='UTF-8'?-->

    000000000
    Canberk
    <Sınıfı>3

Java’ da Xpath Sorguları

Java’ da Xpath Sorguları

Xpath bir XML dosyası içerisinden istenilen bilgiyi bulmayı sağlayan bir dildir. Başka bir deyişle XPath, XML dosyasının ağaç ile gösteriminden yararlanarak dosya içerisinde gezinmeyi sağlar. Sizlere XPath kullanımını bir XML dosyası içerisinde arama yaparak anlatmaya çalışacağım.

Not: Aksini söylemedikçe kodlar birbirleriyle bağlıdırlar.

Önceden varolan XML dosyasını kodda Document olarak açma:

String filepath = xmlFilePath;//dosya adresi
   DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
   DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
   Document doc = docBuilder.parse(new File(filepath));



XPath’ i sorgu için hazır hale getirme:

   XPathFactory xpf = XPathFactory.newInstance();
   XPath xpath = xpf.newXPath();

1-Etiket(Tag) Düğümlerinin(Node)  Özelliklerinde(Attributes) Arama:

<TagAdi ID="882" TagOzellik="Mavi" TagSekli="Yuvarlak">
    <Isim>Daire</Isim>
    <YariCap>5 cm</YariCap>
  </TagAdi>

şeklinde bir tag olduğunu varsayın, şu şekilde bir kod ile bu tag içinde arama yapabiliriz.

   XPathExpression expr = xpath.compile("/TagAdi [@ID=]");
   //burada key değeri ID değeri ile karşılaştırılacak değer.
   XPathExpression expr = xpath.compile("/TagAdi [@TagOzellik= ]");
   XPathExpression expr= xpath.compile("/TagAdi [@TagSekil= ]");

“/TagAdi/@ID” denildiği zaman, bütün “TagAdi” düğümlerinin “ID”‘ leri seçilmiş olur.

2-Bulunan Etiket(Tag) Düğümünün (Node) Çocukları(Children) Üzerinde Dolaşma(Traverse)

  Node nodeGettingChanged = (Node) expr.evaluate(doc, XPathConstants.NODE);
   NodeList childNodes = nodeGettingChanged.getChildNodes();



   for (int i = 0; i != childNodes.getLength(); ++i)
   {
      Node child = childNodes.item(i);



     //Bir elementin düğümünü(Node) arıyoruz.
     //Bu yüzden eğer element türünde bir düğümde değilsek devam etsin dönmeye
     if (!(child instanceof Element))
       continue;
       //Key değerine burada, bulmak istediğiniz "TagAdi" düğümü
       //altındaki diğer düğümlerin isimlerinden istediğinizin ismini yazabilirsiniz
     if (child.getNodeName().equals(""))
     {
        child.getFirstChild().setNodeValue("Çember");
        //bu şekilde bulduğunuz düğüm değerini güncelleyebilirsiniz.
        //(Key değerine "Isim" yazıldıysa içindeki "Daire" metni "Çember" olacaktır. )
     }
   }

3-Bilinen Bir Düğüm İçerisindeki Elemanı Sırasına Göre Bulma

Not:Yukarıdaki kodlardan bağımsız olarak gerçekleştirilecektir.

 <TagAdi ID="882" TagOzellik="Mavi" TagSekli="Yuvarlak">
    <Isim>Daire</Isim>
    <YariCap>5 cm</YariCap>
  </TagAdi>

Şeklinde bir XML dosyası olduğunu varsayın. Yukarıdaki;

   XPathExpression expr = xpath.compile("//TagAdi [@ID=]");

kodunu şu şekilde değiştirerek yazabiliriz.

XPathExpression expr = xpath.compile("A/B/*[2]");
   //Bu kod, B' nin altındaki C değerlerinden yukarıdan aşağı
   //sırası ile 2. elemanını yani C2' nin seçimini yapar.
Java GUI ile Sürükle & Bırak (Drag&Drop) Eventleri ile Dosya Kopyalama ve Taşıma(Easy File Transfer)

Java GUI ile Sürükle & Bırak (Drag&Drop) Eventleri ile Dosya Kopyalama ve Taşıma(Easy File Transfer)

Boş bi zamanımda yaptığım bu tatlı uygulamayı paylaşmak istedim.Eclipse ve JFormDesigner ile yaptım.

O halde elimden geldiğince kısaltarak programı anlatmaya çalışayım:)


Özellikleri:


-Multi Thread yapıdadırYani birden fazla dosyayı sürükleyip aynı anda bir çok kopyalama işlemi yapılabilir.


-Drag&Drop Eventleri kullanılarak dosya algılama yapılır.


-Taşıma ve Kopyalama seçenek özellikleri vardır.


-Sürükleyip bırakıldığında dosyanın dizini text areada görünür.


-Elimden geldiğince Exception handling ve olası çıkabilcek kullanımdan kaynaklanan yanlış yolları yönlendirmeye çalıştım.


-6 tane hedef dizine aynı anda birden çok kopyalama işlemi yapılabilinir.Yani bir dizin seçimi yapıldığında işlem varsa o dizine bir yada daha çok işlem daha yapılabilinir.


-Dizin seçimi ekle butonu ile olur.Her program kapatıldığında ve açıldığında dizinlerinizi kaybetmezsiniz.Path.txt adında bir dosya oluşturulur ve bunun içerisinde dizinler saklanır.Her açılışta da bu dosyayı arar program.


Eğer dosya yoksa kodda tanımlı olanlar yazılır.”None” şeklinde.

Ardından işlem yapa basarsanız, Radio butonlardan seçili olan dizine kopyalamaya başlayacaktır.(Tabi taşı seçeneğini tiklerseniz onu yapacaktır :))
İşlem birikimini yaklaşık olarak görebiliyosunuz, ancak araya dosyalar attığınızda ayrı ayrı değil de hepsi bir görünüyor.Bu yüzden yüz bine kadar yolunuz var 😀

Tam da bu şekilde..

Büyük doyaları kopyalarken ise bu şekilde birşey görürseniz şaşırmayın 🙂

Kopyalama algoritması, rekürsif bir şekilde işler.Dosyaları oluşturarak ağacı oluşturur.

Kesme algoritması da aynı şekilde kopyalamaya yöneliktir.Ancak kopyaladıktan sonra silme işlemini gerçekleştirir.Kesme işlemi bu yüzden ufacık daha uzun sürebilir.ancak işlerinizi aksatmayacağına eminim.


Öncelikle programı indirmeden önce java altyapısının bilgisayarınızda uygun bir şekilde olduğuna emin olmalısınız yoksa bu şekilde bişey görmeniz işten bile değil.

 

Bu yüzden şunları yüklemekle başlayabilirsiniz.eğer ki böyle bir uyarı alıyorsanız.Bunlar benimle ilgili şeyler değil.Java istiyo..Bu yüzden bana hiç kızmayın,, doyalar topu topu toplamda 105 mb bişeyler.

Öncelik farketmez kanımca ama siz yine de bunu önce yükleyin  Java SE Development Kit 7u2 . Buradaki gri yerde lisans sözleşmesi var onu bi ayarlayın.Yoksa indirmez.İşletim sisteminize uygun olanını indirmeye dikkat edin.


Daha sonra bir de şunu indirin cila olsun.  Java SE Runtime Environment 7u2 .Evet çok güzel bunlardan sonra sorunsuz çalışacaktır.


Tabi bide programı vermem lazım.


İndirmeden öçnce hatırlatma: Eğer sürekli programın yerini değiştirip de Path.txt dosyasını yanından ayırırsanız her defasında path girmek zorunda kalırsınız benden söylemesi.


Bunlar dışında eğer ki programla ilgili önerileriniz varsa, hatta düzeltmeleriniz varsa benimle iletişime geçebilirsiniz.Ben hep burdayım zaten.Son bişey daha 🙂 Yorumlarınızı da beklerim ona göre.


Program .jar uzantılıdır.Tıklayınca çalışır.


Programı indir: Easy File Transfer.jar


Kaynak kodları için aşağı bakın lütfen 🙂

Jarı nasıl yaptım diye sorarsanız..

Jar Dosyası Oluşturma

Eclipse için diyorum, projenin üzerine sağ tuşla tıklayın, Package Explorerdan.

Daha sonra gelecek menüden jar file istiyorum diyin..

 

Sonraki menüden nereye kayıt olsun, işte hangi dosyaları alayım falan dicek.Sizin tek karışacağınız nereye konması olcak.Kendsi hangilerini alacağını bilir.

 

Daha finishe basmayıın! İki kere daha nexte bastıktan sonra (ilk nexte bastığınızda gelen yerde de pek bişey değiştirmiyoruz, siz isterseniz  değiştirin) Gelen yerde Main classınızı söylemeniz lazım ki onu çalıştırsınlar ilk açılışta.

Belki yapmasanız da çalışırdı ama siz sağlama alın.

 

Eveet sonunda finishe basabilirsiniz.ve jar dosyanız oluştu.Güle güle kullanın.
Bunu da seçtikten sonra

Ha ola ki Jar dosyasının içersindeki classlara bakmak istersiniz falan.jar dosyasına sağ tuşla tıklayıp winrar şeklinde çalıştır diyin.Ve içerisinden dışarı alabilirsiniz.Ama muhtemelen bozuk olacaklardır..:D Bu yüzden size kaynak kodlarını da vereyim de rahat edin..Aman diyim jar dosyalarının hepsini böyle aç seçeneği yapmayın sonra uğraşırsınız.(Öyle olursa yardım ederim yine yazın:))

Kaynak kodları : Easy File Tranfer.jar için.

Açıklamalı neli..Kolay anlayacağınızı umuyorum 🙂

Java GUI(Görsel) ile Film Veri Tabanı Kullanıcı Arayüzü Yönetimi

Java GUI(Görsel) ile Film Veri Tabanı Kullanıcı Arayüzü Yönetimi

Bu seneki java dersinin ödevlerinden biri.

Ödevin amacı, Java GUI ile kullanıcı arayüzü tasarlayarak arama algoritması ile ve Combo Box ile film seçimlerini yapıp film özelliklerini gösterebilme.

Kullanılan Listenerlar:
ItemListener Event: itemStateChange,
WindowListener Event: windowClosing
MouseListener  Event: mouseClicked
KeyListener Event: keyPressed
ActionListener Event: actionPerformed

Temel Kullanımları:
Combo Box için ItemListener Kullanımı:

comboMovies = new JComboBox(movies);
//ComboBox 
panel6.add(comboMovies); 
comboMovies.setSelectedItem(null); 
comboMovies.addItemListener(new EventHandler()); 

EventHandler için inner Class:

private class EventHandler implements ItemListener{
//inner Class, combobox için : )
public void itemStateChanged(ItemEvent e) 
{ 
if(e.getStateChange() == ItemEvent.SELECTED) 
{ 
doWork.panelReset();//Tek frame ile movie information olacağından paneller resetlenir 
doWork.setParameter((String) e.getItem()); 
doWork.openMovieInfo(); 
comboMovies.setSelectedItem(null); 
searchTextField.setText("Enter a movie,director or star name"); 
} 
} 
}

Image lerde Tıklama için MouseListener ve mouseClicked Event Kullanımı:
Fotoğraf Ekleme işi

ImageIcon image = new ImageIcon("tsr.jpg");//foto1 
photo1 = new JLabel(" ", image, JLabel.LEFT); 
photo1.addMouseListener//Fotoğrafa tıklayınca bilgiler açılır 
( new MouseAdapter() { public void mouseClicked(MouseEvent e) 
{ 
if(e.getSource() == photo1) 
{ 
doWork.panelReset(); 
doWork.setParameter("The Shawshank Redemption"); 
doWork.openMovieInfo(); searchTextField.setText("Enter a movie,director or star name"); 
} 
} 
} 
); 

Enter tuşu için basma algılaması için KeyListener ve Anonym inner class ile EventHandler:

searchTextField = new JTextField("Enter a movie,director or star name");//isim girilecek text Field 
searchTextField.addActionListener(this); 
searchTextField.addKeyListener
//enter tuşu ile buton tıklama eventi,(Search için) ( 
new KeyAdapter() 
{ 
public void keyPressed(KeyEvent e) 
{ 
if(e.getKeyCode() == e.VK_ENTER) 
{ 
   searchButton.doClick();
} 
} 
}
 ); 

Buttona Frame kapatma işinin verilmesi için WindowListener ve windowClose Eventi:

kapatBtn = new JButton("Close"); 
kapatBtn.addActionListener(this);

this.addWindowListener
//inner anonym class, bu pencere kapatıldığında panelleri temizler,daha sonra tekrar doldurabilmek için
(
   new WindowAdapter()
   {  
      public void windowClosing(WindowEvent ee)
      {
         panelReset();
      }
   }
);

Kapat Buttonu için actionPerformed

public void actionPerformed(ActionEvent e) { 

if(e.getSource() == kapatBtn)//panelleri temizler 
{ 
this.setVisible(false); 
panelReset(); 
} 
} 

Kullanılan Layoutlar:

FlowLayout()
BoxLayout()

Temel Kullanımları:

FlowLayout kullanımı:

 
Container main = getContentPane(); 
main.setLayout(new FlowLayout()); 

Paneller ile BoxLayout Kullanımı:

    
//panelleri birbirine ve container'a ekliyoruz. 
panel1 = new JPanel(); 
panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));
main.add(panel1);

panel3 = new JPanel(); 
panel4 = new JPanel();

panel2 = new JPanel(); 
panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS)); 
main.add(panel2);

panel5 = new JPanel(); 
panel5.setLayout(new BoxLayout(panel5,BoxLayout.Y_AXIS)); 
panel2.add(panel5);


panel6 = new JPanel(); 
panel6.setLayout(new BoxLayout(panel6, BoxLayout.X_AXIS));

selectLabel = new JLabel("Select a Movie");//Label 
panel6.add(selectLabel,FlowLayout.LEFT);

 

Projenin Tamamını indir
Ödevi Ayrıntılı indir

Java’da Film Veritabanı Yönetimi (Diziler ile)

Java’da Film Veritabanı Yönetimi (Diziler ile)

Bu dönemki java ödevlerimizden bir tanesi.Muhtemelen tam not alamayacağım.Ancak alamamın sebebi, nesne yönelimli programlama standartına aykırı olarak , aratma, ekleme, güncelleme, listeleme gibi metodlar için farklı bir sınıf oluşturmuş olmam olabilir.Bunlar aslında ana sınıfta oluşturulmalıymış 🙂

Herneyse, gel gelelim programın istediklerine.

-Sistemin içerisinde bir sürü film olacak ve bu filmlerin bazı özellikleri olacak.Mesela: Başlıkları,  kaç yılında oynadıkları, yönetmenleri, türleri ve oynayan starları.

-Bir de insanlar var, insanların isimleri, doğum tarihleri ve nereli oldukları mevcuttur.

-Starlar da bir insandır, ancak farklı bir sınıfta tanımlanmaları gerekiyor.Starların ek olarak uzmanlık alanları ,  yönetmen, aktör, aktress gibi, ve biyografileri vardır.

Bizden İstenen: Herşeyiyle 4 tane film yaratmak.Ondan sonra filmlerin tutlduğu sistemde işlemler yapabilmek için, Arama metodu(Film için aramada Filmin özellikleri çıkacaktır, Star için aratmada ise starın oynadığı bütün filmlerin özellikleri çıkacaktır.), Filmi güncelleme, Film ekleme, Listeleme ve Çıkış metodları tanımlanacak.

Ödevin Orjinalini Buradan indirebilirsiniz.

Bütün Java Projesini Buradan indirebilirsiniz.