Video giải thích chi tiết
Giới thiệu về Interface
Interface là gì?
Mục đích:
Lưu ý khi sử dụng:
Ví dụ:
a, Tạo ra Interface có tên là MayTinhBoTuiInterface, có các phương thức mặc định là cộng, trừ, nhân, chia hai số thực.
Xây dựng các lớp hiện thực hóa Interface bên trên có tên là: MayTinhCasioFX500 và MayTinhVinaCal500MS.
b, Tạo ra Interface có tên là SapXepInterface, có các phương thức sắp xếp tăng và sắp xếp giảm một mảng số nguyên.
Xây dựng các lớp hiện thực hóa Interface bên trên có tên là: SapXepChen và SapXepChon.
c, Xây dựng lớp hiện thực cả hai Interface ở câu a và b có tên là PhanMemMayTinhBoTui
Thuật toán sắp xếp chèn
void insertionSort(int arr[], int n)
{
int i, key, j;
for (i = 1; i < n; i++)
{
key = arr[i];
j = i-1;
/* Di chuyển các phần tử có giá trị lớn hơn giá trị
key về sau một vị trí so với vị trí ban đầu
của nó */
while (j >= 0 && arr[j] > key)
{
arr[j+1] = arr[j];
j = j-1;
}
arr[j+1] = key;
}
}
Thuật toán sắp xếp chọn
void selectionSort(int arr[], int n)
{
int i, j, min_idx;
// Di chuyển ranh giới của mảng đã sắp xếp và chưa sắp xếp
for (i = 0; i < n-1; i++)
{
// Tìm phần tử nhỏ nhất trong mảng chưa sắp xếp
min_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Đổi chỗ phần tử nhỏ nhất với phần tử đầu tiên
swap(arr[min_idx], arr[i]);
}
}
Viết chương trình
public interface MayTinhBoTuiInterface {
public abstract double cong(double a, double b);
public double tru(double a, double b);
public double nhan(double a, double b);
public double chia(double a, double b);
}
public class MayTinhCasioFX500 implements MayTinhBoTuiInterface{
@Override
public double cong(double a, double b) {
return a+b;
}
@Override
public double tru(double a, double b) {
return a-b;
}
@Override
public double nhan(double a, double b) {
return a*b;
}
@Override
public double chia(double a, double b) {
return a/b;
}
}
public class MayTinhVinacal500 implements MayTinhBoTuiInterface{
@Override
public double cong(double a, double b) {
return a-b;
}
@Override
public double tru(double a, double b) {
return a-b;
}
@Override
public double nhan(double a, double b) {
return a*b;
}
@Override
public double chia(double a, double b) {
return a/b;
}
}
public interface SapXepInterface {
public void sapXepTang(double[] arr);
public void sapXepGiam(double[] arr);
}
public class SapXepChen implements SapXepInterface {
@Override
public void sapXepTang(double[] arr) {
int n = arr.length;
double key;
int i, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
@Override
public void sapXepGiam(double[] arr) {
int n = arr.length;
double key;
int i, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] < key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
}
public class SapXepChon implements SapXepInterface {
@Override
public void sapXepTang(double[] arr) {
int n = arr.length;
int i, j, min_idx;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
double temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
@Override
public void sapXepGiam(double[] arr) {
int n = arr.length;
int i, j, min_idx;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++)
if (arr[j] > arr[min_idx])
min_idx = j;
double temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
}
public class PhanMemMayTinh implements MayTinhBoTuiInterface, SapXepInterface{
@Override
public double cong(double a, double b) {
return a+b;
}
@Override
public double tru(double a, double b) {
return a-b;
}
@Override
public double nhan(double a, double b) {
return a*b;
}
@Override
public double chia(double a, double b) {
return a/b;
}
@Override
public void sapXepTang(double[] arr) {
int n = arr.length;
double key;
int i, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
@Override
public void sapXepGiam(double[] arr) {
int n = arr.length;
double key;
int i, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] < key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
}
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
System.out.println("Test câu a: ");
MayTinhCasioFX500 mfx500 = new MayTinhCasioFX500();
MayTinhVinacal500 mvn500 = new MayTinhVinacal500();
System.out.println("5+3="+ mfx500.cong(5, 3));
System.out.println("4*5="+ mvn500.nhan(4, 5));
System.out.println("4/0="+ mvn500.chia(4, 0));
System.out.println("Test câu b: ");
double[] arr = new double[] {5,1,3,4,5,8,0};
double[] arr2 = new double[] {6,2,7,9,2,4,5};
SapXepChen sxchen = new SapXepChen();
SapXepChon sxchon = new SapXepChon();
sxchen.sapXepTang(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
sxchon.sapXepGiam(arr2);
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]+" ");
}
System.out.println();
System.out.println("Test câu c:");
PhanMemMayTinh pmmt =new PhanMemMayTinh();
System.out.println("3+5=" + pmmt.cong(3, 5));
double[] arr3 = new double[] {6,2,7,9,2,4,5};
pmmt.sapXepTang(arr3);
for (int i = 0; i < arr3.length; i++) {
System.out.print(arr3[i]+" ");
}
}
}
em không biết áp dụng bắt lỗi try_catch ở câu a, anh có thế hướng dẫn em được không ạ
Trả lờiXóa