+4

Bài Tập 4OOP Quan trọng trong ngôn ngữ lập trình hướng đối tượng!

Giới thiệu

Tầm quan trọng của OOP trong thế giới lập trình là không thể phủ nhận, và dưới đây là 1 bài tập nhỏ đầy đủ 4 tính chất của OOP: Trừu tượng, Thừa Kế, Đóng Gói, Đa Hình và là 1 trong những bài quan trọng nhất phải thuần thục. Chi tiết về OOP các bạn tìm hiểu tại đây. hoặc tại đây.

Đặt bài toán Mình muốn có 1 bài tập bao quát được 4 tính chất cơ bản của OOP, là 1 bài toán thực tế ,đơn giản dễ nhớ.

  • tạo 1 protocol Animal, dù mày là con gì đi chăng nữa thì mày cũng phải biết chào hỏi => func hello().
  • tạo class Dog,Cat adopt protocol Animal này,và override func hello() để chào hỏi theo cách của riêng chúng.
  • tạo 1 class Zoo, quản lý tất cả động vật trong sở thú! và tập hợp các animal trong sở thú là tuyệt mật => private animal
  • trong class Zoo, có 2 func là addAnimation() và removeAnimation(), ở đây mình để access modifier là internal(vì class là internal, nên func phải có access modifier là internal ,fileprivate hoặc private nếu để là private thì chỉ có thánh thần mới biết đưa động vật vào trong sở thú thôi).
  • trong class Zoo có 1 func quan trọng là allHello(),bắt tất cả động vật phải chào hỏi nhau,tuỳ từng con vật mà cách nó chào hỏi sẽ khác nhau, và acess modifier cũng là internal.
//: Playground - noun: a place where people can play

import UIKit
import Foundation

// ***** MARK: - Tinh truu tuong *****
//============================================================================
protocol Animal {
    func hello()
}
//============================================================================


// ***** MARK: - Tinh Ke Thua *****
//============================================================================
class Dog: Animal {
    func hello() {
        print("Cho sua Go Go")
    }
}
class Cat: Animal {
    func hello() {
        print("Meo Keu Meo meo")
    }
}
//============================================================================
// ***** MARK: - Tinh Dong Goi *****
//============================================================================
class Zoo {
    private var animal = [Animal]()
    func addAnimal(animal: Animal) {
        self.animal.append(animal)
    }
    func removeAnimal(animal: Animal) {
        self.animal.dropLast()
    }
    func allHello() {
        print("=====AllAnimation Hello=====")
        for i in 0 ..< animal.count {
            animal[i].hello()
        }
    }
}
//============================================================================

// ***** MARK: - Tinh Da Hinh *****
//============================================================================
let zoo = Zoo()
var animal: Animal?
animal = Dog()
animal?.hello()
zoo.addAnimal(animal: animal!)
animal = Cat()
animal?.hello()
zoo.addAnimal(animal: animal!)
zoo.allHello()
//============================================================================

Kết quả: Kêt qua

Với 1 lập trình viên có chút kinh nghiệm chỉ nhìn là đã đủ hiểu,ở đây mình muốn hướng đến những bạn chưa nắm rõ được OOP.

  1. Tính trừu tượng thể hiện qua func hello() của protocol Animal
  2. Tính thừa kế thể hiện qua class Dog: Animalclass Cat: Animal
  3. Tính đóng gói thể hiện qua private var animal = [Animal]() của class Zoo
  4. Tính đa hình thể hiện qua:
/// Cùng gọi animal?.hello()
animal = Dog()
animal?.hello()   //print("Cho sua Go Go")
animal = Cat()
animal?.hello() //print("Meo Keu Meo meo")

Kết

Qua bài tập đơn giản trên sẽ giúp được các bạn hiểu rõ hơn về OOP, đây là 1 bài tập rất cơ bản nhưng đầy đủ tính chất của OOP,đối với các bạn chưa thật sự hiểu rõ OOP hãy cố gắng thuần thục bài toán trên nó sẽ đem lại cho các bạn cái nhìn tổng quát về OOP, cám ơn các bạn đã đọc bài viết.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí