Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Методические указания по выполнению практических заданий.




Объектно-ориентированное программирование

Содержание

Теоретическая часть. 2

Практическая часть. 2

Пример выполнения задания. 3

Индивидуальные задания. 6

Методические указания по выполнению практических заданий. 9

Основы языка java. 10

Описание классов, создание объектов и основы ООП.. 14

Пакеты java. 17

Обработка исключений (exceptions) 19

Некоторые объекты стандартных пакетов java.lang и java.util. 21

Организация ввода/вывода. 23

Список рекомендуемой литературы: 27

 


Теоретическая часть.

Для сдачи теоретической части, необходимо дать развернутые ответы на два вопроса из нижеприведенного списка.

Список вопросов к зачету по дисциплине ООП:

1. Понятие объектно-ориентированного подхода.

2. Абстракция, инкапсуляция, полиморфизм, наследование.

3. Объекты и классы.

4. Состояние, поведение, идентичность.

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

6. Создание и запуск Java-программ.

7. Технология развертывания Java-приложений.

8. Классы и объекты в Java. Public, protected, private, static.

9. Понятие пакетов, примеры использования.

10. Расширение класса, реализация интерфейсов.

11. Концепция MVC (Model View Controller).

12. Понятие и применение исключений (Exceptions).

13. Организация потокового ввода/вывода (Stream).

14. Стандартные потоки (Stream) ввода/вывода.

15. Фильтрующие потоки (Stream) ввода/вывода.

16. Потоки (Stream) данных.

17. Класс File и файловые потоки (Stream).

18. Понятие многопоточности в приложениях (Thread).

19. Реализация многопоточности (Thread) в Java.

20. Аплеты, определение и реализация.

21. Графические библиотеки Java.

22. Контейнеры и компоненты в Java.

23. Компоновка элементов графического интерфейса.

24. Классификация JDBC-драйверов.

 

Практическая часть.

Для сдачи практической части зачета, необходимо выполнить 1 практическое задание, по выбору преподавателя (время выполнения ограничено). Каждое индивидуальное задание включает в себя три подзадачи. Для выполнения задания необходимо провести объектно-ориентированную декомпозицию задания. В общем случае для каждой подзадачи должен быть описан свой класс, но принимаются и другие, обязательно обоснованные, решения. Ввод и вывод данных осуществляется через консоль. При вводе массива указывается количество элементов, затем осуществляется поэлементный ввод.

Пример выполнения задания.

Рассматриваемый пример иллюстрирует объектный подход к решению следующей задачи: Подсчитать количество нулевых элементов в матрице. Для выполнения задания был выделен класс Matrix, обладающий следующими полями: количество строк матрицы, количество столбцов матрицы и поле, хранящее саму матрицу. Решение задачи реализовано как метод zeroCalc объекта класса Matrix. Помимо этого метода, класс Matrix включает в себя еще некоторое множество служебных методов, позволяющих заполнять матрицу случайными значениями, выводить на экран, устанавливать и получать значения элементов матрицы и т.д.

 

Проект состоит из двух классов: Main и Matrix, код для которых помещается в два текстовых файла с соответствующими именами (Main.java и Matrix.java). В методе public static void main класса Main создаётся объект класса Matrix и вызываются его методы соответствующие заданию и выводу результатов на экран.

Листинг.

Класс Main:

public class Main {

public static void main(String args[]) {

System.out.println("Задание: посчитать количество нулевых элементов матрицы");

Matrix m1 = new Matrix(3, 3);

//Создаём объект, экземпляр класса Matrix, назовем его m1. При создании используем конструктор Matrix(кол-во рядов,кол-во столбцов).

m1.rand(10);

//Вызываем метод для объекта m1 метод rand, заполняющий случайными значениями матрицу хранящуюся в этом объекте. (параметр этого метода указывает диапазон случайных чисел)

m1.print();

// Вызываем для объекта m1 метол print, для вывода на экран матрицы.

System.out.print("Количество нулевых элементов в этой матрице=");

System.out.println(m1.zeroCalc());

//Выводим на экран значение возвращаемое методом zeroCalc для объекта m1

}

}

Класс Matrix:

import java.util.Random;

 

public class Matrix {

//Описание класса для работы с матрицей

// Объявление внутренних полей объекта этого класса.

private int rows = 0; // Поле для хранения количества строк матрицы

private int cols = 0; // Поле для хранения количества рядов матрицы

private int[][] MatrixData = new int[rows][cols];

//Поле для хранения самой матрицы

// Объявление методов, определяющих поведение объектов-экземпляров этого класса

public Matrix() {

//Метод-конструтор (служит для инциализации при создании объекта)

// В этом методе в поле объекта хранящее матрицу записываются следующие значения:

this.MatrixData = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

}

public Matrix(int i, int j) {

// Это также метод-конструктор, отличающийся наличием параметров, с помощью которых

// можно задавать размерность матрицы хранщейся в соответствующем поле объекта

this.cols = j;

//берем параметр этого метода и записываем в поле col объекта для которого вызван этот метод

this.rows = i;

this.MatrixData = new int[this.cols][this.getRows()];

//устанавливаем размерность матрицы полученными значениями

for (int a = 0; a < this.rows; a++) {

for (int b = 0; b < this.cols; b++) {

this.setElement(a, b, 0); //С помощью метода SetElement(он описан ниже) задаем нулевые значения элементов этой матрицы

}

}

}

 

public Matrix(int[][] mat) {

// Еще один конструтор, позволяющий задавать значения матрицы, хранящейся в объекте

// Для этого, надо передать готовую матрицу в качесте параметра конструктору

MatrixData = mat;

}

 

public int[][] getMatrixData() {

// Этот метод возвращает матрицу хранящуюся в объекте этого класса

return MatrixData;

}

 

public int getRows() {

// Возвращает значение поля "количество рядов" объекта этого класса

return rows;

}

 

public int getCols() {

// Возвращает значение поля "количество столбцов" объекта этого класса

return cols;

}

 

public void setCols(int cols) {

// Позволяет устанавливать значение поля "количество столбцов"

this.cols = cols;

}

 

public void setRows(int rows) {

// Позволяет устанавливать значение поля "количество рядов"

 

this.rows = rows;

}

 

public int getElement(int i, int j) {

// Возвращает значение элемента расположенного в i-том ряду, j-том столбце

return this.MatrixData[i][j];

}

 

public void setElement(int i, int j, int val) {

//Записывает значение параметра val в i-тый,j-тый элемент матрицы

this.MatrixData[i][j] = val;

}

 

public void print() {

//Метод предназначен для вывода на экран матрицы объекта этого класса

for (int i = 0; i < this.rows; i++) {

for (int j = 0; j < this.cols; j++) {

System.out.print(this.getElement(i, j) + " ");

/*Выводим на экран элемент с индексами i и j

(получаем его с помощью метода этого класса getElement) */

}

System.out.println();

}

}

 

public int zeroCalc() {

//Метод возвращает количество нулевых элементов в матрице объекта этого класса

int zerocount = 0;

for (int i = 0; i < this.rows; i++) {

for (int j = 0; j < this.cols; j++) {

if (this.getElement(i, j) == 0) {

zerocount++;

}

}

}

return zerocount;

}

 

public void rand(int lim) {

//Метод заполняющий матрицу случайными значениями

Random rand = new Random();

// Создаём объект rand класса Random

for (int i = 0; i < this.rows; i++) {

for (int j = 0; j < this.cols; j++) {

this.setElement(i, j, rand.nextInt(lim));

// с помощью вызова метода nextInt объекта rand получаем случайное значение в диапазоне от 0 до значения параметра lim

}

}

 

}

}

Индивидуальные задания

1. a) Вычислите сумму главных диагоналей квадратной матрицы.

b) Определите, является ли заданная строка символов числом.

с) Выведите из строки, содержащей слова, разделенные пробелами и запятыми, центральное слово (если в предложении два центральных слова, выведите оба).

 

2. a) Дан массив чисел. Необходимо определить упорядочен ли он.

b) Найдите символ в строке, который встречается наибольшее число раз.

с) Найдите самое длинное слово в предложении.

 

3. a) Отсортируйте значения в массиве.

b) Определите, входит ли строка, указанная в командной строке, при запуске программы, в предложение.

с) Удалите в предложении каждое третье слово.

 

4. a) Отсортируйте слова в массиве по их длине.

b) Подсчитайте количество предложений в заданном тексте.

с) Дана строка, содержащая слова, разделенные пробелами, запятыми, восклицательными знаками, вопросительными знаками. Отсортируйте слова строки по длине.

 

5. a) Сгенерируйте числовой ряд длиной не более 50, представляющий собой числа Фибоначчи (каждый последующий элемент представляют суммы двух предыдущих, первые два элемента равны 1). Выведите на печать первые 10, отмечая четные числа каким-нибудь символом.

b) Подсчитайте количество всех знаков препинания в заданном тексте.

с) Удалите из строки, содержащей слова, разделенные пробелами, запятыми и точками, у которых первая буква не совпадает с последней.

 

6. a) Сгенерируйте числовой ряд из первых 10 чисел натурального ряда.

b) Определите количество символов и количество слов в строке, содержащей слова, разделенные пробелами, запятыми, точками.

с) Дана строка, в которой содержится хотя бы одна точка. Модифицируйте строку так, чтобы все символы "+", предшествующие первой точке, заменяются на символ "-", а все запятые, расположенные после первой точки, удаляются.

 

7. a) Сгенерируйте числовой ряд длиной 30 элементов, представляющий квадраты чисел натурального ряда. Сформируйте из полученных значений два массива: один с четными значениями, другой с нечетными.

b) Подсчитайте, какие символы наиболее часто встречаются в предложении.

с) Выберите из множества числа, удовлетворяющие условию введенному в командной строке при запуске программы.

 

8. a) Выберите из предложения слово, которое располагается в центре предложения, то есть символ, входящий в его состав, является центральным символом в предложении (с учетом пробелов).

b) Определите количество всех знаков препинания в данной строке.

с) Найдите длину первого слова в предложении, а затем выберите из предложения все слова той же длины.

 

9. a) Дан массив чисел, знак операции и операнд. Выведите на печать массив, полученный в результате арифметического действия, совершенного над элементами массива.

b) Подсчитайте количество гласных букв в заданном тексте.

с) Переставьте слова в предложении в обратном порядке.

 

10. a) Найдите минимальный элемент квадратной матрицы.

b) Найдите символы в строке, который встречается менее 10%.

с) В строке, содержащей слова, разделенные пробелами и запятыми, разверните указанное слово справа налево.

 

11. a) Дан массив чисел. Выведите их на печать, сдвигая положительные значения на 5 пробелов вправо.

b) Подсчитайте количество пробелов в заданном тексте.

с) Выведите множество четных и нечетных слов строки. В строке слова разделены пробелами, запятыми, точками с запятыми и двоеточиями.

 

12. a) Проверьте, отсортировано ли множество чисел в строке.

b) Отсортируйте слова в массиве по третьей букве, если слово меньше трех букв, то по последней.

с) Дана строка, содержащая слова, разделенные пробелами, запятыми и точками. Выберите все слова, являющиеся палиндромами.

 

13. a) Дана матрица. Необходимо сгенерировать новую матрицу, элементы не первой строки которой равны произведению соответствующих элементов исходной матрицы на первый элемент столбца.

b) Вычислите значение арифметического выражения. Два операнда и знак операции задаются в командной строке при запуске программы.

с) Выберите все слова из строки, содержащей слова, разделенные пробелами и запятыми, которые полностью состоят из одного символа.

 

14. a) Дан массив чисел. Необходимо упорядочить его по убыванию.

b) Отсортируйте слова в массиве по алфавиту.

с) Выберите из предложения все слова, которые имеют четный порядковый номер.

 

15. a) Отсортируйте слова в массиве по убыванию длины.

b) Определить входит ли слово, указанное в командной строке при запуске программы, в массив слов.

с) Переставьте местами слова в предложении, под указанными позициями, введенными в командной строке при запуске программы.


Методические указания по выполнению практических заданий.

Sun Microsystems поставляет язык программирования Java в виде пакета инструментальных средств разработчика JDK (Java Developer’s Kit). Бесплатная версия JDK доступна в сети Internet по адресу http://java.sun.com/j2se/. Выделяются три версии (или три класса) Java 2 Platform: Standard Edition, Enterprise Edition и Micro Edition.

Java 2 Platform Standard Edition состоит из четырех основных компонентов:

· Компилятор Java;

· Виртуальная машина Java (JVM);

· Библиотеки классов Java;

· Отладчик Java;

Существуют отдельные версии JVM для запуска программ, которые носят название Java Runtime Environment (JRE).

После установки пакета JDK, в выбранном при инсталляции каталоге, будет построена следующая структура подкаталогов:

· jdkXXX\ — Java Developer’s Kit

jdkXXX\bin\ — каталог инструментария разработчика

jdkXXX\db\ — каталог с примерами работы с базами данных

jdkXXX\demo\ — каталог с примерами

jdkXXX\include\ — файлы заголовков для взаимодействия с C++

jdkXXX\jre\ — Java Runtime Environment (поставляется конечному пользователю при распространении приложения)

jdkXXX\lib\ — библиотеки Java для разработчиков

jdkXXX\sample\ — каталог с примерами

· jreXXX\ — Java Runtime Environment

jreXXX\bin\ — Java Virtual Machine (JVM)

jreXXX\lib\ — библиотеки Java для конечных пользователей

 

Каталоги bin\ содержит ряд программ, которые необходимы в процессе разработки и использования Java-приложений. В частности, в нем расположен компилятор Java (javac.exe), необходимый для компиляции исходных текстов Ваших программ, и интерпретатор Java (java.exe), который используется для запуска программ.

Для того чтобы запустить программу, написанную на языке java, вам необходимо:

1. Откомпилировать программу. Для этого необходимо запустить компилятор (javac.exe), указав в командной строке в качестве параметра имя файла .java:

 

javac.exe имя_файла. java

 

Если программа была откомпилирована без ошибок, то в текущем каталоге появиться новый файл с именем описанного класса и расширением .class.

 

2. Для выполнения программы необходимо воспользоваться Java Virtual Machine (интерпретатором Java – java.exe). Для этого запустите JVM с указанием имени класса (без расширения .class)

 

java.exe имя_класса

 

ПРИМЕЧАНИЕ: Для упрощения процесса написания и исправления кода программы Вы можете использовать установленные в компьютерных классах среды разработки Java-программ (например, JBuilder, InelliJ IDEA, NetBeans).

 

Основы языка java

Базовым элементом объектно-ориентированного программирования в языке Java является класс. Для того, чтобы создать класс, достаточно иметь исходный файл, в котором будет присутствовать ключевое слово class, и вслед за ним допустимый идентификатор – имя класса – и пара фигурных скобок для описания его тела. Все функции Java объявляются внутри классов и называются методами. Ниже представлен пример простой программы «Hello World».

class HelloWorld {

public static void main (String args []) {

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

}

}

 

Языковые конструкции Java:

оператор If

if (условие) оператор1; [else оператор2;]

if (условие) { оператор1; оператор2}

[else {оператор3; оператор4}]

оператор Switch

switch (переменная) {

case значение1: {

// последовательность операторов }

break;

case значение2: {

// последовательность операторов }

break;

case значениеN: {

// последовательность операторов }

break;

default:

// последовательность операторов }

} // закрывающая скобка switch

цикл While

while (условие) {

// тело цикла }

цикл Do - while

do {

// тело цикла

} while (условие)

цикл For

for (инициализация; условие; итерация)

{ // тело цикла }

например:

for (int i=0; i<=50; i++)

{ System.out.println("i="+i) };

 

 

операторы продолжения и прерывания

выход из блока break
передача управления на условие цикла continue
выход return

арифметические операции

сложение +
вычитание -
умножение *
деление /
остаток от деления по модулю %
инкремент ++
декремент --

операции отношений

равно ==
не равно !=
больше >
меньше <
больше или равно >=
меньше или равно <=

булевы операции

логическое И &
логическое ИЛИ |
логическое исключающее ИЛИ (XOR) ^
укороченное ИЛИ ||
укороченное И &&
логическое отрицание !
равно ==
не равно !=

 

Базовые типы языка Java (примитивные типы или примитивы)

Логический boolean
Символьный char
Байтовый byte
Короткий целый short
Целый int
Длинный целый long
Вещественный float
Вещественный двойной точности double

 

Стоит особо отметить, что в Java определены две категории типов данных: простые типы (примитивы) и объектные типы. Простые типы не являются объектно-ориентированными, они аналогичны простым типам большинства традиционных языков программирования. Объектные типы являются «оболочками» для инкапсуляции простых типов, например, класс Integer для int, Boolean для boolean, Byte для byte.

Переменная, описанная вне метода, называется полем. Синтаксис:

<Тип> <переменная>;

Примеры описания переменных и полей:

byte a;

byte b = 121;

byte с = 0х55;

short t = 0x55aa;

int i;

int j = 0;

int k = 0x55aa;

float f;

float f2 = 3. 14f; // обратите внимание на f

// по умолчанию все не целые числа double

double pi = 3. 14159265358979323846;

boolean done = false;

Для объявления типа массива используются квадратные скобки. Синтаксис:

<Тип>[] <переменная>;

или

<Тип>[] <переменная> = new <Тип> [<количество элементов массива>];

или

<Тип>[] <переменная> = {<элемент1>,<элемент2>,…};

Длину массива можно вычислить через length. Например:

int[] month_days = new int [12];

byte[] a;

...

if (a.length!= 0) {... }

 

Ключевое слово void используется при описании метода, не возвращающего какого-либо определенного результата (результат пустой, метод является процедурой). Синтаксис:

void <имя метода> (<список параметров>){< код >}

 

Иногда в процессе разработки программы возникают ситуации, требующие преобразования переменной одного типа к другому типу. Такое преобразованиеназывают- приведением типов (type casting). Синтаксис:

<Тип 1> <переменная 1> = <значение>;

<Тип 2> <переменная 2> = (<Тип 2>)<переменная 1>;

В Java строки являются реальными объектами – экземплярами класса java.lang.String. Разработчику, создающему Java-программы, доступно большое количество методов, позволяющих работать со строками, в том числе сравнивать строки, осуществлять поиск и извлекать определенные символы и подстроки.

length()   возвращает длину строки
equals(строка)   проверяет равенство двух строк
equalsIgnoreCase (строка)   проверяет равенство двух строк без учета регистров
compareTo(строка)   сравнивает строки посимвольно и возвращает 0, если строки равны, отрицательное число, если данная строка в алфавитном порядке предшествует другой строке строке, и положительное число в противном случае
startWith(строка)   возвращает true, если начало данной строки совпадает с аргументом
indexOf lastIndexOf   поиска определенного символа или подстроки

 

Рассмотрим еще один небольшой пример программы, которая вычисляет и выводит на экран квадратный корень из суммы квадратов двух чисел. Для вычисления квадратного корня используется статичный метод sqrt класса java.lang.Math.

 

class SummDoubleVars {

public static void main (String args []) {

double a = 3;

double b = 4;

double c;

с = Math.sqrt (a* a + b* b);

System.out.println ("c = "+ c);

}

}

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...