01/10/2018, 09:53

1 câu hỏi về hướng đối tượng

mấy anh cho em hỏi như trong định nghĩa về đối tượng người ta nói là dữ kiệu và các thao tác trên dữ liệu đó sẽ đóng gói trong 1 đối tượng , nhưng khi em học code web java thì em lại thấy người ta map các bảng trong csdl vào chương trình java dưới tên gọi là entity các entity này chỉ có chức năng get/set thôi , còn phần thao tác trên dữ liệu đó thì lại viết ở các lớp service như vậy có đúng hay không ạ , và em cũng vừa đọc qua cái pattern Strategy thấy nó cũng tách các method của 1 đối tượng ra và tạo các interface để định nghĩa các method đó thay vì định nghĩa trực tiếp trong đối tượng … vậy làm theo các nào mới đúng ạ …viết các method xử lý dữ liệu trong cùng 1 đối tượng hay tách nó ra ???

vũ xuân quân viết 12:00 ngày 01/10/2018

Đọc khúc cuối không hiểu em nói gì luôn.
Giờ cần hiểu những vấn đề đơn giản như thế này.

Thao tác trên csdl là những thao tác: select, insert, update và delete.
Trong java thì việc thao tác csdl được ánh xạ vào class Entity. Thay vì ngồi viết những câu sql lặp đi lặp hoài. Chỉ cần sửa dùng Entity thì việc viết code đơn giản hơn.

phần thao tác trên dữ liệu

Không hiểu em muốn nói về thao tác gì trên dữ liệu ?
Nếu thao tác về csdl thì Entity đảm trác rồi.
Còn tháo tác về cộng, trừ, nhân chia … Thì những thao tác này gọi là business logic.
Business logic sẽ do 1 class khác phụ trách xử lý.

Mình chưa nghiên cứu về design pattern nên không biết ý bạn về khúc sau lắm.
Còn việc ứng dụng design pattern vào code như thế nào thì tùy theo trình của người viết code.
Việc đúng hay sai khó nói lắm.

Cong 5 viết 12:04 ngày 01/10/2018

vd : sau khi mapping từ csdl sang ta có

> Class ConVit{
>     private int id ;
>     private string tenconvit;
       //geter /setter
>    // có nên định nghĩa method VitKeu() ở đây không ?
> }
> }

thay vì định nghĩa method VitKeu() ngay trong Class ConVit thì ta khai báo 1 interface ServiceVit rồi cho 1 class implement nó và định nghĩa method VitKeu() ở bên trong

interface ServiceVit {
VitKeu() ;

}

class ServiceVitImpl implements ServiceVit {
VitKeu(){
// định nghĩa
}

}

theo anh thì nên làm theo cách trên hay dưới , vì lúc em hoc môm pttkht thì em thấy họ viết luôn các method xử lý vào trong các class luôn , còn lúc làm web thì thấy họ lại tách nó ra như cái ở dưới…

vũ xuân quân viết 12:04 ngày 01/10/2018

Đầu tiên cần suy nghĩ vì sao mình làm hệ thống như thế.
Trong trường hợp số 1. Vì sao viết phương thức(method) VieKeu() vào trong lớp(class) ConVit. Có thể phương thức đó chỉ có 1 mình lớp ConVit dùng thì mình viết interface ra làm gì.
Trong trường hợp số 2. Vì sao mình viết một lớp interface ? Có một số phương thức hoặc thuộc tính mà các đối tượng có chung nhau. Vậy thì mình nên viết một lớp interface. Để các lớp khác kế thừa và hiện thực các phương thức. Cái này thể hiện tình trường tượng và đa hình trong hướng đối tượng.

Dựa vào phân tích trên thì anh chọn cái số 1.
Anh không hiểu là em nói khi làm web thì họ lại tách ra ? Không biết em dựa vào điều gì để nói tách ra.

Bài liên quan
0