Принципы объектно-ориентированного программирования

         

Невыровненные массивы



Невыровненные массивы

Последнее, что мы рассмотрим в связи с массивами, — невыровненные массивы (jagged array). Невыровненный массив — это просто массив массивов. Вот пример определения массива, состоящего из массивов целочисленных значений:

int[][] jaggedArray;

Невыровненные массивы можно применять при разработке редактора. При этом вы можете хранить каждый объект, представляющий созданный пользователем элемент управления, в массиве. Допустим, у вас есть массив кнопок и массив полей со списком (чтобы этот пример был небольшим и легко управляемым). У вас могут быть три кнопки и три поля со списком в соответствующих массивах. Объявив невыровненный массив, можно создать для этих массивов "родительский" массив, что позволит вам при необходимости легко выполнять циклическую программную обработку элементов управления:

using System;



class Control {

virtual public void SayHiO

{

Console.WriteLine("Ba3oebiu класс для элементов управления");

} }

class Button : Control {

override public void SayHiO

{

Console.WriteLine("Кнопка");

} }

class Combo ; Control <

override public void SayHiO ?

{ . . ,

Console.WriteLine("Элемент со списком");

} }

class JaggedArrayApp

{

public static void Main() {

Control[][] controls; controls = new Control[2][];

controls[0] = new Control[3];

for (int 1=0; i < controls[0].Length; i++)

<

oontrols[0][i] = new ButtonO;

}

controls[1] = new Control[2];

for (Int i = 0; i < controls[1].Length; i++)

{

controls[1][i] = new ComboO; }

for (int i = 0; i < controls.Length;i++) {

for (int j=0;j< controls[i].Length;J++) <

Control control = controls[i][j]; control. SayHiO; } }

string str = Console.ReadLineO; } }

Как видите, я определил базовый класс (Control), два производных (Button и Combo) и объявил массив массивов, содержащих объекты Controls. Таким образом, я могу хранить в массивах значения определенных типов и благодаря полиморфизму быть уверенным, что, когда наступит время извлечь объект из массива (с помощью объектов, приведенных к базовому классу), все будет работать так, как я задумал.

 

Содержание раздела