Общи характеристики на езика



страница1/5
Дата25.02.2017
Размер432.83 Kb.
#15745
ТипЛекция
  1   2   3   4   5
Лекция 1 Език за програмиране Java. Характеристики на езика. Преминаване от C++ към Java
    1. Общи характеристики на езика:


  • Прост;

  • Обектно-ориентиран;

  • Разпределен;

  • Интерпретира се;

  • Ясен;

  • Защитен;

  • Платформено независим;

  • Може да се пренася на различни машини (Портира);

  • Ефективен;

  • Много-нишков;

  • Динамичен.
    1. Java се изпълнява чрез виртуална машина (Java Virtual Machine-JVM)


Изходният код на Java (source) не се компилира към машинен код за процесора. Той се транслира към код за виртуалната машина, специално проектирана за езика, която поддържа специфичните възможности на Java. Интерпретаторът на Java след това изпълнява транслирания код. Няма свързващ редактор. Интерпретаторът динамично свързва класовете при необходимост.





    1. Java е напълно обектно-ориентиран език


Java е напълно обектно ориентиран език. Това означава, че всичко, което се създава е под формата на методи (обръщения към функции) на обекти, написани на Java. Понятието глобална функция не съществува в езика. Това се отнася и за главната функция на приложението ( main ). Тя се създава като член функция на клас. Приложението се разглежда като специфичен обект, член функция на който е главната функция на приложението. Повечето приложения на Java създават класовете като използват за базов клас примитивният клас на Java Object, но това може да се избегне със създаването на базов клас на приложението, в който да се включат функции, общи за всички приложения.

Пример: Създаване на приложение, което се записва във файл с името на главния клас (HelloWorldApp.java)



/**

* HelloWorldApp class имплементира приложение, извеждащо

* "Hello World!" на стандартния изход.

*/


public class HelloWorldApp {

public static void main(String[] args) {

System.out.println("Hello World!");

}

}



Съществуващ C и C++ код не може да се използва директно, същото се отнася за системните обръщения. В C++ може да се извика съществуваща функция на C, включително системни обръщения с деклариране на extern "C" . При Java съществува подобен излаз, но той не е толкова естествен и прост за използване. Могат да се дефинират методи, които да имплементират интерфейс към функции на C, след което да се свържат към кода на Java. Средата на Java предоставя програмни средства за облекчаване на програмирането на тази връзка, но процесът не е така естествен, както при връзката между C и C++. Връзката с класове, написани на C++ е по-сложна, отколкото към C. Много от общите системни функции на C и C++ се предоставят в системните функции на Java като методи на класа System, но създадените от програмистите на C++ класове и методи трябва да се препишат на Java.

Типове данни
Прости типове: тези, които се предават по стойност, са подобни на С++;

Разлики:

  • При символен тип (char) се използва международния 16-bit Unicode на символите, като той може автоматично да представя повечето национални символи.

  • Статичните константни символни низове се преобразуват автоматично към обекти String. Няма еквивалентен на статични символни масиви от C и C++.

  • Масивите имат доста различна структура и поведение в програмите на Java спрямо тези в C++. Те имат член променлива, само за четене length която връща големината на масива. По време на изпълнение се проверява и генерира изключение при опит за достъп извън границите на масива. Всички масиви се създават в динамичната памет и могат да се присвояват един на друг. Операторът за присвояване копира само описателя на (референцията към) паметта, а не съдържанието. Идентификаторът на масива е базов клас, като всички методи са общодостъпни за всички други обекти.


Референтни типове: Типове, които се предават чрез референция-3 типа:


  • Array - масиви;

  • class - класове;

  • interface – интерфейси.

Java предоставя нова ключова дума интерфейс ( interface ), която създава еквивалент на абстрактен базов клас, в който има само абстрактни методи, без член променливи. Това създава недвусмислена разлика между клас, дефиниран като съвкупност от функции, и промяна на съществуваща функционалност чрез наследяване, която се декларира с ключова дума extends. Тя няма значението на С++ като клас, от който не могат да се създават обекти. Един абстрактен клас може да съдържа абстрактни методи (може и да не съдържа нищо), но той може да съдържа имплементация, която е ограничена от единично наследяване. Заедно с интерфейсите схемата не се нуждае от механизъм като виртуалните базови класове на C++. За създаване на интерфейс, който може да се инстанциира може да се използва следния пример:

public interface Face {

public void smile(); // абстрактен метод

}

public class Student extends Person implements Face {



public void smile( ) {

System.out.println("a warm smile");

}

}

Всички не прости типове (Референтни типове) могат да се създават само динамично-чрез оператора new. Нямат еквивалент създаването на стоково базираните променливи на C++, освен за простите типове . Простите типове могат да се създават само в стека, без да се използва new. Съществуват и заграждащи класове (wrapper classes) за всички прости типове, които позволяват създаването им като еквивалент на базираните на динамичната памет обекти чрез new. (Масивът от прости типове е изключение: те могат да се алокират чрез обща инициализация като в C++, или с използване на оператора new.)


Операции

  • В Java е добавена операция за изместване надясно с три символа > за извършване на логическо изместване на битове надясно >>> с вмъкване на нула накрая; операцията (позната от C++) >> вмъква знаковия бит при изместването (т.е. Реализира "аритметично" изместване).

  • В Java е премахнат операторът за обхват operator :: . За тази цел в Java се използва операторът точка . , което следва от факта, че всичко се дефинира в класа и няма декларация и дефиниция, като в С++. Другата причина, за което е нужен този оператор е при обръщение към статичните методи. Вместо използвания в С++ оператор за обхват, отново се използва операторът точка, например:

ClassName.methodName( );

независимо от това, че методът е статичен. Имената на пакетите (package), заместващи именните пространства, също се идентифицират с точка, например:

import java.awt.*; Действието е подобно на (#include) в С++.
Типове променливи


    1. Каталог: Course%20II -> Term%20Two -> OOP%20II
      OOP%20II -> Структурни диаграми по uml 0: Класова диаграма (Class diagram) Символи: (private) частен елемент: атрибут или метод
      Course%20II -> Приоритети на Европейския съюз в областта на компютърните и комуникационните технологии
      Term%20Two -> Конспект за изпита по дисциплината "Микропроцесорна техника"
      Term%20Two -> Б wm initdialog
      Course%20II -> Конспект по Основи на компютърните комуникации
      Term%20Two -> Задача: Езикът L е задaден чрез регулярен израз: r = ( a+b ba )( b + ab a ) ( b+ ab a) + a + b ba


      Сподели с приятели:
  1   2   3   4   5




©obuch.info 2024
отнасят до администрацията

    Начална страница