Языки программирования
<<  История программирования языка Pascal Основы программирования на языке Java  >>
Пакет java
Пакет java
Картинки из презентации «Основы программирования на языке Java» к уроку информатики на тему «Языки программирования»

Автор: Vsevolod. Чтобы познакомиться с картинкой полного размера, нажмите на её эскиз. Чтобы можно было использовать все картинки для урока информатики, скачайте бесплатно презентацию «Основы программирования на языке Java.ppt» со всеми картинками в zip-архиве размером 161 КБ.

Основы программирования на языке Java

содержание презентации «Основы программирования на языке Java.ppt»
Сл Текст Сл Текст
1Основы программирования на языке Java. 20public stats ( T [] array ) { nums =
Пакет java.lang, синтаксический «сахар», array; } public double average ( ) {
родовые компоненты (generics) Java. (С) double sum = 0.0; for (T n : nums ) {
Всеволод Рылов, все права защищены. 1. //все типы наследники number реализуют
Новосибирск, 2004. метод doublevalue() sum +=
2Пакет java.lang – поддержка языка и n.Doublevalue(); } return sum /
платформы. 2. (С) Всеволод Рылов, все nums.Length(); } }. 20. (С) Всеволод
права защищены. Новосибирск, 2004. Рылов, все права защищены. Новосибирск,
3Классы поддержки основных механизмов. 2004.
3. Новосибирск, 2004. (С) Всеволод Рылов, 21«Шаблоны» параметров - wildcards.
все права защищены. Допустим мы хотим сравнивать средние
4Классы поддержки системы типов. 4. значения объектов Stats<T>: class
Новосибирск, 2004. (С) Всеволод Рылов, все Stats <T extends Number> { private T
права защищены. [ ] nums; public Stats ( T [] array ) {
5Класс java.lang.System (основные nums = array; } public double average ( )
методы)? 5. Новосибирск, 2004. (С) { … } public boolean sameAvg (
Всеволод Рылов, все права защищены. Stats<T> another) { return average()
6Класс java.lang.Runtime (основные == another.average(); } } //Проблема –
методы)? 6. Новосибирск, 2004. (С) нельзя сравнить среднее разных
Всеволод Рылов, все права защищены. спецификаций: Integer intArray[] = { 1, 2,
7Java.Lang.Class (основные методы)? 4, 7 }; Double doubleArray [] = { 6.0,
Дополнительно имеется множество методов 7.8, 22.0 }; Stats<Integer> intStats
для работы с полями, агрегатами и методами = new Stats<Integer> (intArray);
определенными в классе. 7. Новосибирск, intStats.sameAvg (new
2004. (С) Всеволод Рылов, все права Stats<Double>(doubleArray) );
защищены. //Compile time error. 21. (С) Всеволод
8Классы-обертки для основных типов. Рылов, все права защищены. Новосибирск,
Используются тогда, когда нужно работать с 2004.
значениями примитивных типов как с 22Решение – использование «?». Class
объектами Используются для получения stats <T extends number> { private T
разнообразной информации о диапазонах [ ] nums; public stats ( T [] array ) {
значений и специальных значениях данного nums = array; } public double average ( )
типа Используются для преобразования типов { … } public boolean sameavg (
между собой, между различными системами stats<?> Another) { return average()
счисления, в строковый формат и наоборот == another.Average(); } } ? можно
из строкового формата (наследники класса использовать для спецификации обобщенных
java.lang.Number)? Объекты классов ссылок и generic-type массивов
оберток, ровно как и объекты класса String stats<?> Anystats = new
не могут быть изменены после создания. При stats<integer> ( ); stats<?>
операциях с ними могут создаваться новые Array[] = new stats<?> [10]; ?
объекты. 8. (С) Всеволод Рылов, все права следует применять при проверках instanceof
защищены. Новосибирск, 2004. stats<integer> istats = new
9Пример класса обертки – stats<integer> ( new integer[]{ 1,
java.lang.Integer. 9. Новосибирск, 2004. 2, 3, 4} ); istats instanceof
(С) Всеволод Рылов, все права защищены. stats<?> // True. 22. (С) Всеволод
10Автоматическая обертка Рылов, все права защищены. Новосибирск,
boxing/unboxing. С целью поддержки 2004.
наглядности компилятор может осуществлять 23Ограниченные wildcards. abstract class
автоматическое преобразование примитивных Shape { public abstract void draw(Canvas
типов в объектные и наоборот: Integer i = c); } public class Ellipse extends Shape {
5; // Integer i = new Integer(5); Integer … } public class Polygon extends Shape { …
array[] = new Integer[] { new Integer(1), } … public static void drawAll (List<?
new Integer(2), new Integer(3) }; // можно extends Shape> shapesList, Canvas c ) {
заменить : Integer array [] = { 1, 2, 3}; for (Shape s : shapesList) s.draw ( c ); }
Необходимо соблюдать осторожность при // При этом следующий код не работает:
обратных преобразованиях во избежание public void addPolygon(List<? extends
NullPointerException class Foo { static Shape> shapes ) { shapes.add(new
Integer doSomething() { … } } … int i = Polygon(…)); //compile time error } <?
Foo.doSomething(); // вероятен extends Bar> - при спецификации может
NullPointerException Integer theI = использоваться любой наследник включая сам
Foo.doSomething(); int i = (theI != null) класс Bar <? super Foo> - может
? theI, 0; 10. (С) Всеволод Рылов, все использоваться только суперкласс Foo. 23.
права защищены. Новосибирск, 2004. (С) Всеволод Рылов, все права защищены.
11Оптимизация цикла for для массивов. Новосибирск, 2004.
class Foo { public static void main(String 24Родовые методы. class Bar { public
args[] ) { for (String s : args ) { static <T> void
System.out.println(s); } } } // fromArrayToCollection (T[] a, Collection
Эквивалентно … for (int i = 0; i < <T> c) { for (T v: a) c.add(v); } }
args.length; i++) { System.out.println( … Integer[] ia = new Integer[100];
args[i] ) ; }. 11. (С) Всеволод Рылов, все Collection<Integer> ic = new
права защищены. Новосибирск, 2004. ArrayList<Integer>();
12Переменное количество аргументов. При Bar.fromArrayToCollection (ia, ic);
необходимости можно оптимизировать //спецификация на основе аргументов
передачу массива однотипных значений с //Можно использовать совместно с
помощью синтаксиса с переменным wildcards: public class Collections {
количеством аргументов class Bar { public public static <T> void
static void someFunction( String s, int … copy(List<T> dest, List<? extends
array) { int sum = 0; for (int i : array ) T> src) { … } }. 24. (С) Всеволод
{ sum += i; } } } … Рылов, все права защищены. Новосибирск,
Bar.someFunction(“one”, 1, 2, 3, 4, 5); // 2004.
аргументы одного типа // эквивалентно 25Что лучше использовать? interface
static void someFunction(String s, int[ ] Collection <E> { public boolean
array) {…}. 12. (С) Всеволод Рылов, все containsAll (Collection <?> c);
права защищены. Новосибирск, 2004. public boolean addAll (Collection<?
13Математические средства платформы extends E> c); } //или interface
java. java.lang.StrictMath – Collection <E> { public <T>
класс-утилита, содержащий основные boolean containsAll(Collection <T>
математические функции. Гарантирует точную c); public <T extends E> boolean
повторяемость числовых результатов вплоть addAll(Collection <T> c); }
до бита java.lang.Math – класс-утилита, Замечания по именованию Обычно
работающая быстрее чем StrictMath (на используется параметр T Если параметров
старых версиях машины) но не гарантирующая несколько – то буквы близкие по алфавиту,
точное воспроизводство числовых например T совместно с S Если родовой
результатов для иррациональных чисел. В метод (класс) вложен в другой родовой
версии 1.6 java.lang.Math делегирует компонент, то лучше использовать отличную
вызовы StrictMath java.math.BigDecimal, от параметра этого компонента букву. 25.
java.math.BigInteger – классы для работы с (С) Всеволод Рылов, все права защищены.
числами произвольного размера и точности. Новосибирск, 2004.
13. (С) Всеволод Рылов, все права 26Raw типы и совместимость. Для
защищены. Новосибирск, 2004. совместимости с ранним кодом можно
14Родовые компоненты – обобщения использовать родовые компоненты без
(generics). Позволяют объявлять классы, спецификации параметров List rawList = new
интерфейсы и методы, где тип данных и LinkedList(); Integer i = 5; // помним о
ограничения на него, которыми они boxing rawList.add( i ); // реально
оперируют указан в виде параметра rawList.add( (Object) i); … Integer v =
Позволяют реализовать код, который будет (Integer) rawList.get(0);
работать единообразно с разными типами List<Number> nList = new
данных В отличие от использования ссылок ArrayList<Number>(); … rawList =
на тип Object предоставляют безопасные с nList; // безопасно, но теряем защиту по
точки зрения типизации средства типу … List<Integer> iList =
обобщенного программирования Спецификация (List<Integer) rawList; //Допустимо но
параметра задается явно (классы, опасно! int v = iList.get(0); //
интерфейсы и ссылки) или выводится на ClassCastException ! 26. (С) Всеволод
основании аргументов (вызов методов) Рылов, все права защищены. Новосибирск,
Соответствие типа проверяется на стадии 2004.
компиляции. 14. (С) Всеволод Рылов, все 27Родовые компоненты и наследование.
права защищены. Новосибирск, 2004. Родовые классы (интерфейсы) могут
15Простейший пример. До java 1.5: public наследоваться от обычных классов
class Envelope { private Object ref; (интерфейсов) и наоборот Возможно
public Envelope (Object arg) { ref = arg; приведение ссылки дочернего родового
} public Object get() { return ref; } } … класса (интерфейса) на базовый только в
Envelope e = new Envelope(new MyClass()); том случае, если совпадают значения
… MyClass m = (MyClass) e.get(); //OK // аргументов – типов заданные при
ClassCastException in runtime: Another a = спецификации Если классы A и B связаны
(Another) e.get(); Необходимо знать и наследованием (A extends B), то это не
учитывать объект какого типа был сохранен. значит, что специфицированные ссылки
Начиная с 1.5: public class Envelope параметризованных типов которым переданы
<T> { private T ref; public Envelope эти классы в качестве параметров-типов
(T arg) { ref = arg; } public T get() { совместимы между собой ! // параметры
return ref; } } … Envelope <MyClass> совпадают, класс LinkedList<T>
e = new Envelope<MyClass>(new реализует интерфейс List<T>
MyClass()); … MyClass m = e.get(); List<String> stringList = new
//compile time error: Another a = e.get(); LinkedList<String> (); //OK //
Проверка типа осуществляется на стадии значения параметров у ссылок не совпадают,
компиляции. 15. (С) Всеволод Рылов, все присваивание невозможно:
права защищены. Новосибирск, 2004. List<Object> objectList =
16Грамматика родового класса. stringList; //compile time error. 27. (С)
ClassDeclaration: NormalClassDeclaration Всеволод Рылов, все права защищены.
EnumDeclaration NormalClassDeclaration: Новосибирск, 2004.
ClassModifiersopt class Identifier 28Реализация обобщенных интерфейсов.
TypeParametersopt Superopt Interfacesopt interface MinMax <T extends
ClassBody TypeParameters : < Comparable<T>> { T min(); T
TypeParameterList > TypeParameterList : max(); } //Класс реализующий родовой
TypeParameterList , TypeParameter | интерфейс должен быть родовым class
TypeParameter TypeParameter: TypeVariable MinMaxArray <T extends Comparable
TypeBoundopt TypeBound: extends <T>> implements MinMax { T [ ]
ClassOrInterfaceType vals; MinMaxArray (T arg[ ] ) { vals =
AdditionalBoundListopt arg; } public T min () { … } public T max
AdditionalBoundList: AdditionalBound () { … } } … Character chrs [ ] = { ‘c’,
AdditionalBoundList AdditionalBound ‘f’ , ‘k’, ‘a’ }; // boxing Character
AdditionalBound: & InterfaceType. 16. maxChar = (new
(С) Всеволод Рылов, все права защищены. MinMaxArray<Character>
Новосибирск, 2004. (chrs)).max(); //Однако можно наследовать
17Грамматика родового интерфейса и специфицированный интерфейс class
метода. InterfaceDeclaration: MinMaxIntegerArray extends
NormalInterfaceDeclaration MinMax<Integer> { … }. 28. (С)
AnnotationTypeDeclaration Всеволод Рылов, все права защищены.
NormalInterfaceDeclaration: Новосибирск, 2004.
InterfaceModifiersopt interface Identifier 29Перегрузка и наследование. public
TypeParametersopt ExtendsInterfacesopt class Base <T> { private T val;
InterfaceBody MethodDeclaration: public Base(T v) { val = v;} public T
MethodHeader MethodBody MethodHeader: getVal() { return val;} } public class
MethodModifiersopt TypeParametersopt Derived<T,S> extends Base<T> {
ResultType MethodDeclarator Throwsopt. 17. private S another; public Derived (T v, S
(С) Всеволод Рылов, все права защищены. s) { super(v); another = s; } public T
Новосибирск, 2004. getVal () { … } //Перегруженный метод }
18Основные отличия от C++. При //Допустимо: Base<Integer> b = new
объявлении специфической ссылки имеющей Derived <Integer, String> (5,
типом родовой класс или интерфейс не “Hello!”); 29. (С) Всеволод Рылов, все
происходит генерация кода класса права защищены. Новосибирск, 2004.
(интерфейса) Все объекты – специфические 30«Очистка параметров» при компиляции.
экземпляры родового класса разделяют один Из соображений совместимости вся
и тот же обобщенный тип Параметрами информация о параметрах – типах при
родового компонента могут быть только типы компиляции удаляется При этом происходит
На параметры родового компонента можно замена параметров типа на реально их
наложить ограничения по наследованию ограничивающий класс class Bar<T
определенного типа и/или интерфейса extends Number> {…} - T заменяется на
(интерфейсов) Исключения и перечисления не Number class Foo<T> {…} - T
могут быть родовыми типами В качестве заменяется на Object class GenStr <T
значений параметров при спецификации не extends String> { T str; GenStr ( T
могут использоваться примитивные типы val) { str = val; } T getStr () {return
java. 18. (С) Всеволод Рылов, все права str;} } // откомпилируется как будто был
защищены. Новосибирск, 2004. написан так: class GenStr extends Object {
19Использование параметров - типов. В java.lang.String str; GenStr
теле родового компонента можно (java.lang.String val) {str = val;}
использовать параметр типа для объявления java.lang.String getStr() { return str; }
ссылок и спецификации значений аргументов }. 30. (С) Всеволод Рылов, все права
других параметризуемых типов class защищены. Новосибирск, 2004.
MyGeneric <T> { private T t; private 31Дополнительные проблемы. Методы –
AnotherGeneric< T > at = new мосты (генерируются компилятором) class
AnotherGeneric<T>(); } Нельзя Base <T> { public T f () { … } //
инстанцировать объект или массив имеющий откомпилируется в Object f() {…} } class
типом – параметр: class Derived extends Base<String> {
SomeGeneric<T> { T t = new T(); public String f() { return super.f(); } //
//compile time error T array = new T[10]; нужен мост } Потенциальная неоднозначность
//compile time error } Параметр типа class Foo <T,S> { T t; S s; void set
недоступен в статическом контексте class (T targ) { t = targ; } // компилируется в
HasStatic<T> { static T t; //compile set(Object o) {…} void set (S sarg) { s =
time error }. 19. (С) Всеволод Рылов, все sarg; } // компилируется в set(Object o)
права защищены. Новосибирск, 2004. {…} }. 31. (С) Всеволод Рылов, все права
20Ограниченные типы. Class stats <T защищены. Новосибирск, 2004.
extends number> { private T [ ] nums;
Основы программирования на языке Java.ppt
http://900igr.net/kartinka/informatika/osnovy-programmirovanija-na-jazyke-java-214454.html
cсылка на страницу

Основы программирования на языке Java

другие презентации на тему «Основы программирования на языке Java»

«Курсы языков» - КАРЛОВ УНИВЕРСИТЕТ (ПРАГА) Чешская республика. ТАЙБЭЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ, Тайваньский Технопарк по инновациям и инкубатор знаний Тайбэй – столица Тайваня. Международная летняя школа чешского языка. Лингвистический университет. Международная летняя школа чешского языка для молодежи от 18 лет с 28. 6. - 17. 07. 2010г.

«История развития языков программирования» - Француз Филип Кан разработал систему Турбо-Паскаль. В состав модуля входят разделы: заголовок, интерфейс, реализация, инициализация. Середина 50-х годов характеризуется стремительным прогрессом в области программирования. Языки программирования высокого уровня. Фундаментальных понятия языка. Элементы алфавита.

«Классификация языков программирования» - Утилита для работы с библиотеками; встроенная справочная служба; отладочная программа. Программа – отладчик; транслятор; библиотека стандартных программ и функций. На слайдах будут приведены вопросы с вариантами ответа. Машинным; машинно-ориентированным; машинно-независимым языкам. Томасом Курцем, Джоном Кемени.

«Язык программирования Паскаль» - Язык программирования Паскаль. ЯП Паскаль выбран как наиболее удовлетворяющий целям обучения: Гибок и развит в отношении типов данных. Алгоритмический язык Паскаль. Блез Паскаль (1623 – 1662). назван в честь английского ученого Блеза Паскаля. Обучает хорошему стилю программирования, воспитывает дисциплину структурного программирования.

«Конспекты уроков по русскому языку» - В классе - атмосфера взаимоподдержки и взаимопомощи. Особенности изучения темы: - блочная подача материала; - опережающее обучение; - компоновка материала. Обучение русскому языку по опорным схемам-конспектам имеет много достоинств. Сс [ ] ,с.с [ ]. Прозрачный лес один чернеет, и П ель сквозь иней зеленеет.

«Объектно-ориентированное программирование» - Описание класса в Delphi. Вопрос 2. Иерархия Композиционная иерархизация объектов. Различие: Процедурное программирование нацелено на моделирование действий, выполняемых компьютером. Концепция полиморфизма - идея «один интерфейс - множество методов». Объект обладает состоянием поведением идентичностью.

Языки программирования

23 презентации о языках программирования
Урок

Информатика

130 тем
Картинки
900igr.net > Презентации по информатике > Языки программирования > Основы программирования на языке Java