Cách tạo đối tượng trong lớp C++

Nói cách khác, đối tượng là một thực thể có trạng thái và hành vi. Ở đây, trạng thái có nghĩa là dữ liệu và hành vi có nghĩa là chức năng

Đối tượng là một thực thể thời gian chạy, nó được tạo trong thời gian chạy

Đối tượng là một thể hiện của một lớp. Tất cả các thành viên của lớp có thể được truy cập thông qua đối tượng

Hãy xem một ví dụ để tạo đối tượng của lớp sinh viên sử dụng s1 làm biến tham chiếu

Trong ví dụ này, Student là kiểu và s1 là biến tham chiếu đề cập đến thể hiện của lớp Student


Trong C++, lớp là một nhóm các đối tượng giống nhau. Nó là một khuôn mẫu mà từ đó các đối tượng được tạo ra. Nó có thể có các trường, phương thức, hàm tạo, v.v.

Hãy xem một ví dụ về lớp C++ chỉ có ba trường


Ví dụ đối tượng và lớp C++

Hãy xem một ví dụ về lớp có hai trường. id và tên. Nó tạo thể hiện của lớp, khởi tạo đối tượng và in giá trị đối tượng

đầu ra


Ví dụ lớp C++. Khởi tạo và hiển thị dữ liệu thông qua phương thức

Hãy xem một ví dụ khác về lớp C++ nơi chúng tôi đang lưu trữ và hiển thị thông tin nhân viên bằng phương thức

Mục đích chính của ngôn ngữ lập trình Objective-C là thêm hướng đối tượng vào ngôn ngữ lập trình C và các lớp là tính năng trung tâm của Objective-C hỗ trợ lập trình hướng đối tượng và thường được gọi là các loại do người dùng định nghĩa

Một lớp được sử dụng để chỉ định hình thức của một đối tượng và nó kết hợp biểu diễn dữ liệu và các phương thức để thao tác dữ liệu đó thành một gói gọn gàng. Dữ liệu và phương thức trong một lớp được gọi là thành viên của lớp

Đặc điểm mục tiêu-C

  • Lớp được định nghĩa trong hai phần khác nhau là @interface và @implementation

  • Hầu hết mọi thứ đều ở dạng đối tượng

  • Các đối tượng nhận thông điệp và các đối tượng thường được gọi là người nhận

  • Các đối tượng chứa các biến thể hiện

  • Đối tượng và biến thể hiện có phạm vi

  • Các lớp ẩn việc triển khai đối tượng

  • Các thuộc tính được sử dụng để cung cấp quyền truy cập vào các biến thể hiện của lớp trong các lớp khác

Định nghĩa lớp khách quan-C

Khi bạn xác định một lớp, bạn xác định một kế hoạch chi tiết cho một kiểu dữ liệu. Điều này không thực sự xác định bất kỳ dữ liệu nào, nhưng nó xác định ý nghĩa của tên lớp, tức là đối tượng của lớp sẽ bao gồm những gì và những hoạt động nào có thể được thực hiện trên một đối tượng như vậy

Định nghĩa lớp bắt đầu bằng từ khóa @interface theo sau là tên giao diện (lớp); . Trong Objective-C, tất cả các lớp đều bắt nguồn từ lớp cơ sở gọi là NSObject. Nó là siêu lớp của tất cả các lớp Objective-C. Nó cung cấp các phương thức cơ bản như cấp phát bộ nhớ và khởi tạo. Ví dụ: chúng tôi đã xác định kiểu dữ liệu Hộp bằng cách sử dụng lớp từ khóa như sau -

@interface Box:NSObject {
   //Instance variables
   double length;    // Length of a box
   double breadth;   // Breadth of a box
}
@property(nonatomic, readwrite) double height;  // Property

@end

Các biến thể hiện là riêng tư và chỉ có thể truy cập được bên trong triển khai lớp

Cấp phát và khởi tạo đối tượng Objective-C

Một lớp cung cấp các bản thiết kế cho các đối tượng, vì vậy về cơ bản một đối tượng được tạo ra từ một lớp. Chúng ta khai báo các đối tượng của một lớp với chính xác kiểu khai báo mà chúng ta khai báo các biến kiểu cơ bản. Các câu lệnh sau khai báo hai đối tượng của lớp Box −

Box box1 = [[Box alloc]init];     // Create box1 object of type Box
Box box2 = [[Box alloc]init];     // Create box2 object of type Box

Cả hai đối tượng box1 và box2 sẽ có bản sao thành viên dữ liệu riêng

Truy cập các thành viên dữ liệu

Các thuộc tính của các đối tượng của một lớp có thể được truy cập bằng cách sử dụng toán tử truy cập thành viên trực tiếp (. ). Hãy để chúng tôi thử ví dụ sau để làm rõ mọi thứ -

#import 

@interface Box:NSObject {
   double length;    // Length of a box
   double breadth;   // Breadth of a box
   double height;    // Height of a box
}

@property(nonatomic, readwrite) double height;  // Property
-(double) volume;
@end

@implementation Box

@synthesize height; 

-(id)init {
   self = [super init];
   length = 1.0;
   breadth = 1.0;
   return self;
}

-(double) volume {
   return length*breadth*height;
}

@end

int main() {
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];    
   Box *box1 = [[Box alloc]init];    // Create box1 object of type Box
   Box *box2 = [[Box alloc]init];    // Create box2 object of type Box

   double volume = 0.0;             // Store the volume of a box here
 
   // box 1 specification
   box1.height = 5.0; 

   // box 2 specification
   box2.height = 10.0;
  
   // volume of box 1
   volume = [box1 volume];
   NSLog(@"Volume of Box1 : %f", volume);
   
   // volume of box 2
   volume = [box2 volume];
   NSLog(@"Volume of Box2 : %f", volume);
   
   [pool drain];
   return 0;
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau -

2013-09-22 21:25:33.314 ClassAndObjects[387:303] Volume of Box1 : 5.000000
2013-09-22 21:25:33.316 ClassAndObjects[387:303] Volume of Box2 : 10.000000

Tính chất

Các thuộc tính được giới thiệu trong Objective-C để đảm bảo rằng biến thể hiện của lớp có thể được truy cập bên ngoài lớp

Các phần khác nhau là khai báo thuộc tính như sau
  • Các thuộc tính bắt đầu bằng @property, là một từ khóa

  • Nó được theo sau bởi các từ xác định quyền truy cập, là nonatomic hoặc Atomic, readwrite hoặc readonly và Strong,Unsafe_unretained hoặcYếu. Điều này thay đổi dựa trên loại biến. Đối với bất kỳ loại con trỏ nào, chúng ta có thể sử dụng Strong, __unsafe_unretained hoặc Weak. Tương tự như vậy đối với các loại khác, chúng ta có thể sử dụng readwrite hoặc readonly

  • Tiếp theo là kiểu dữ liệu của biến

  • Cuối cùng, chúng ta có tên thuộc tính được kết thúc bằng dấu chấm phẩy

  • Chúng ta có thể thêm câu lệnh tổng hợp trong lớp triển khai. Nhưng trong XCode mới nhất, phần tổng hợp được XCode đảm nhận và bạn không cần đưa vào câu lệnh tổng hợp

Chỉ có thể với các thuộc tính chúng ta có thể truy cập các biến thể hiện của lớp. Trên thực tế, các phương thức getter và setter nội bộ được tạo cho các thuộc tính

Ví dụ: giả sử chúng ta có thuộc tính @property (không nguyên tử, chỉ đọc) BOOL isDone. Dưới mui xe, có setters và getters được tạo như hình bên dưới

Chúng ta có thể tạo các đối tượng trong C không?

Về mặt lập trình C, một đối tượng được triển khai dưới dạng một tập hợp các thành viên dữ liệu được đóng gói trong một cấu trúc và một tập hợp các hoạt động liên quan . Với nhiều phiên bản, dữ liệu cho một đối tượng được sao chép cho mỗi lần xuất hiện của đối tượng.

Làm thế nào để tạo một lớp C?

Tôi đã làm theo cách này. .
Xác định các thành viên dữ liệu của bạn trong một cấu trúc
Xác định các thành viên chức năng của bạn lấy một con trỏ tới cấu trúc của bạn làm đối số đầu tiên
Làm những điều này trong một tiêu đề và một c. Tiêu đề cho định nghĩa cấu trúc & khai báo hàm, c để triển khai

Làm thế nào để một lớp tạo ra một đối tượng?

Khi bạn tạo một đối tượng, bạn đang tạo một thể hiện của một lớp, do đó "khởi tạo" một lớp. Toán tử mới yêu cầu một đối số hậu tố duy nhất. một cuộc gọi đến một nhà xây dựng. Tên của hàm tạo cung cấp tên của lớp để khởi tạo. Constructor khởi tạo đối tượng mới

Có bao nhiêu đối tượng có thể được tạo trong một lớp C?

7. Có bao nhiêu đối tượng có thể trình bày trong một lớp? . Bởi vì một lớp có thể chứa bất kỳ số lượng đối tượng nào theo sự tuân thủ của nó.