OCA Java imtahan mövzuları

Redundant Imports | Naming Conflicts | Package | Code formatting on the Exam

Redundant Imports

Əgər iki class eyni paket daxilində yerləşərsə, bir class`ın daxilində digər class`a müraciət etmək üçün həmin class`ı import etməyə ehtiyac yoxdur. Amma həmin class`ı import etsək, bu xəta verməyəcək, normal compile olunacaq. Bu hal “redundant import” sayılır, yəni import etməsək belə kod compile olunacaq, etsək də kod xəta verməyəcək. Başqa sözlə, bu halda import etmək artıq, lazımsız işdir.

Hətta class`ın özünü belə mövcud olduğu fayl daxilində import etsək compiler xəta verməyəcək, kod normal işləyəcək:

File: mm/MasterITM.java

package mm;
public class MasterITM {}

File: mm/OrientITM.java

package mm;
import mm.MasterITM;
import mm.OrientITM;
public class OrientITM {
    private MasterITM masterItm;
}

 

Naming Conflicts

Java`da paketlərin istifadə edilmə səbəblərindən biri də class adlarının unikal olmamasıdır. Əgər eyniadlı classlar varsa, biz onları yerləşdikləri paketə görə fərqləndiririk. Tutaq ki, aşağıdakı kimi bir kod nümunəmiz var:

File: Conflicts.java

public class Conflicts {
    Date date;    // line D
    // some more code
}

Bu kod nümunəsində biz Date classını import etməliyik, amma Date classı iki fərqli paketdə mövcuddur: java.util.Datejava.sql.Date. Fərqli import nümunələrinə baxaq:

  • // import 1
    import java.util.*;
    import java.sql.*;
  • // import 2
    import java.util.Date; // Date bu paketdən seçilir
    import java.sql.*;     // Date`dən başqa bütün classlar import olunur
  • // import 3
    import java.util.Date;
    import java.sql.Date;  // doesn’t compile

import 1 – D sətri compile olunmur, çünki bu sətirdə konflikt yaranır, java Date classının hansı paketdən import olunduğunu təyin edə bilmir;

import 2 – kod normal compile olunur;

import 3import java.sql.Date; sətri compile olunmur, “..the same simple name is already defined..” xətası verir. Əgər hər iki Date classını eyni vaxtda istifadə etmək istəyiriksə, o zaman aşağıdakı formada yazırıq:

public class Conflicts {
    java.util.Date date;
    java.sql.Date sqlDate;
}

 

Package

temp qovluğunda 2 package və hər birində də bir class yaradırıq:

C:\temp\packagea\ClassA.java
C:\temp\packageb\ClassB.java

File: packagea/ClassA.java

package packagea;
public class ClassA {}

File: packageb/ClassB.java

package packageb;
import packagea.*;
class ClassB {
    public static void main(String[] args) {
        ClassA a;
        System.out.println("Class A uğurla import olundu");
    }
}

Cmd ilə bu kodu dərləyib icra etmək üçün aşağıdakı əmrlər ardıcıl icra olunmalıdır:

  1. cd C:\temp
  2. javac packagea\ClassA.java packageb\ClassB.java
  3. java packageb.ClassB

Əgər source kodda paket (package) adı qeyd olunmayıbsa, həmin classın default paketdə yaradıldığı fərz edilir. Default paketdə yaradılmış classların digər paketdəki classlar tərəfindən import edilməsi qəti mümkün deyil!

lava.lang paketi java`da xüsusi paket hesab olunur və avtomatik import olunur.

 

Code formatting on the Exam

Əgər imtahanda verilən sualdakı kodların ilk sətri 1-dən başlayırsa (the line number 1), o zaman zəruri olan bütün classların import edilib edilmədiyinə diqqət yetirmək lazımdır. Məsələn, aşağıdakı kodda problem yoxdur, çünki kod 6-cı sətirdən başlayır və belə olan halda importun edilib edilməməsi ilə bağlı qəti təxmin yürütmək mümkün deyil:

public void method(ArrayList list) {
    if (list.isEmpty()) { 
        System.out.println("e");
    } else { 
        System.out.println("n");
    }
}

Bu kodda isə java.util.ArrayList import edilmədiyindən compile error verir:

public class LineNumbers {
    public void method(ArrayList list) {
        if (list.isEmpty()) { 
            System.out.println("e");
        } else { 
            System.out.println("n");
        }  
    } 
}

 

Bütün mövzulara bax

About the author

Mushfiq Mammadov

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.