- •Объектно-ориентированное программирование Содержание
- •Теоретическая часть.
- •Практическая часть.
- •Пример выполнения задания.
- •Листинг.
- •Индивидуальные задания
- •Методические указания по выполнению практических заданий.
- •Основы языкаjava
- •Описание классов, создание объектов и основы ооп
- •Пакетыjava
- •Обработка исключений (exceptions)
- •IllegalArgumentException
- •IndexOutOfBoundsException
- •Некоторые объекты стандартных пакетовjava.Langиjava.Util.
- •Организация ввода/вывода
- •Список рекомендуемой литературы:
Листинг.
Класс 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
}
}
}
}