Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объясните пару строчек в этой программе, Проблема с вложенными классами 
:(
    Опции темы
vierumk666
  Дата 28.8.2012, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.7.2011

Репутация: нет
Всего: нет



Программа из книги Head First C#, перешел к изучению наследования классов. И здесь пример программы, и не могу разобраться со строчками когда, в голове каша от этого))

Я написал Комменты - на тех участках которые непонятны.
--Jewels.cs
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace zadanie12_virtual
{
    class Jewels
    {
        public string Sparkle()
        {
            return "Sparkle, sparkle!";
        }
    }
}


--Safe.cs
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace zadanie12_virtual
{
    class Safe
    {
        private Jewels contents = new Jewels();  //Не понятна суть иницализации обьекта в классе другом
        private string safeCombination = "12345";
        
        public Jewels Open(string combination)   //И что это за метод, где тип Класс Jewels
                                                              //Как это вообще работает? - впервые сталкиваюсь
        {
            if (combination == safeCombination)
                return contents;                        //Что тут возвращает? - пустой объект?
            else
                return null;
        }

        public void PickLock(Locksmith lockpicker) //А это что объявление объекта класса Locksmith  в 
                                                                //параметрах?
        {
            lockpicker.WriteDownCombination(safeCombination);
        }
    }
}



--Owner.cs
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace zadanie12_virtual
{
    class Owner
    {
        private Jewels returnedContents;
        public void ReceiveContents(Jewels safeContents)
        {
            returnedContents = safeContents;
            Console.WriteLine("Thank you for returning my jewels! " + safeContents.Sparkle());
        }
    }
}



--Locksmith.cs
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace zadanie12_virtual
{
    class Locksmith
    {
        public void OpenSafe(Safe safe, Owner owner)
        {
            safe.PickLock(this);
            Jewels safeContents = safe.Open(writtenDownCombination);
            ReturnContents(safeContents, owner);
        }
        private string writtenDownCombination = null;
        public void WriteDownCombination(string combination)
        {
            writtenDownCombination = combination;
        }
        public void ReturnContents(Jewels safeContents, Owner owner)
        {
            owner.ReceiveContents(safeContents);
        }
    }
}



--JewelThief.cs
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace zadanie12_virtual
{
    class JewelThief : Locksmith
    {
        private Jewels stolenJewels = null;
        public void ReturnContents(Jewels safeContents, Owner owner)
        {
            stolenJewels = safeContents;
            Console.WriteLine("I'm stealing the contents! " + stolenJewels.Sparkle());
        }
    }
}



--Program.cs
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace zadanie12_virtual
{
    class Program
    {
        static void Main(string[] args)
        {
            Owner owner = new Owner();
            Safe safe = new Safe();
            JewelThief jewelThief = new JewelThief();
            jewelThief.OpenSafe(safe, owner);
            Console.ReadKey();
        }
    }
}


В общем то основные вопросы, но из-за этого я все остальное также переварить не могу. Прошу помощи разобраться в этих вложенных классах, а также и эти вложения в параметры методов.
PM MAIL   Вверх
Cheloveck
Дата 28.8.2012, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Судя по вопросам, тебе нужно перечитать книгу заново или выбрать более хорошую книгу, например эту.


--------------------
user posted image
PM Jabber   Вверх
erm0l0v
Дата 28.8.2012, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: 1
Всего: 1



в C# все объекты это ссылочные типы. И по этому мы можем использовать их как простые переменные, передавать в параметры методов, возвращать как значения и.т.д.

Думаю это ответит на все вопросы.
Кстати здесь мы тоже создаем новый объект.
Код

private string safeCombination = "12345";

как и  в
Код

private Jewels contents = new Jewels();

только для string используется упрощенный синтаксис.
PM MAIL   Вверх
vierumk666
Дата 28.8.2012, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.7.2011

Репутация: нет
Всего: нет



Цитата(Cheloveck @ 28.8.2012,  10:11)
Судя по вопросам, тебе нужно перечитать книгу заново или выбрать более хорошую книгу, ...

Да просто в этой книге ничего такого до этого не было, и я полагаю что меня это и озадачило. Я обычно непонятные мне нюансы более подробно изучаю в книге Шилдт Полное руководство. Просто в этой книге Стиллмена задачи и лабораторные которые помогают в усвоении материала, Шилдт же как справочник. У Дейтелов в книге тоже дофига и больше задач, но все не советуют эту книгу.

Я как бы понимаю, что в коде написано в этой программе, но тока пытаюсь разобраться у меня вся цепочка разрывается. Т.е. с  самой сутью, что именно делают эти участки кода  не понимаю, что конкретно возвращают. Я бы у Шилдта поискал в книге, но не знаю что именно искать)) - где рассматривались бы вопросы вложения в классы других классов (зачем это делается), где в метод передается Класс ( что именно от класса он передает и как работает)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0683 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.