Вопросы и ответы | 

Андрей Тюрин
Программирование на Java:

Нужна помощь. У меня не работает пример из лекции №9 

тема  внутри лекции клонирование.

Там есть 2 примера клонирования. 

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

А вот ссылочное поле было скопировано по ссылке, оба объекта ссылаются на один и тот же экземпляр класса Point. Поэтому изменения, происходящие с исходным объектом, сказываются на клонированном.

Этого можно избежать, если переопределить метод clone() в классе Test.

Далее приводится собственно пример того что у меня не работает. Переопределяется метеод   в классе Test переопределяется метод clone().


    public Object clone() throws CloneNotSupportedException {
        Test clone=null;
        try {
            clone=(Test) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new InternalError(e.getMessage());
        }
        clone.p=(Point)this.p.clone();
        return clone;
    }  
 

на рисунке видно что NetBeans подчеркнул метод clone() для обьекта p типа Point.
При попытке откомпилировать программу пишет:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - clone() has protected access in java.lang.Object
    at lecture9.clone2.Test.clone(Test.java:17)
    at lecture9.clone2.Test.main(Test.java:24)

Очевидно что для класса Point метод clone переопределён. Но пример вроде как должен работать судя по ллекции, а у меня не работает. 
кроме того нашол на ютубе разбор аналогичной темы https://www.youtube.com/watch?v=BI_Z8wTVFl8

попробовал повторить то что делается в этом видео результат такой же. Хотя на видео всё работает.
В чем проблемма? Подскажитье прожалуйста.
Спасибо

Теги: графика
Дмитрий Протопопов
Дмитрий Протопопов | Репутация: 10 (Без статуса) 18 июня 2015 в 01:35

Добрый день, Андрей.
Вы правы в том, что необходимо переопределить метод clone() в классе Point с  подходящим методом доступа (в данном примере подойдет только public), если вы хотите использовать его не только внутри текущего объекта класса Point.

Если вы не переопределите clone(), то это будет значить, что в строке 
clone.p=(Point)this.p.clone();
вы из объекта класса Test по ссылке типа Point пытаетесь получить доступ к защищенному методу класса Object(что и пишет вам компилятор). Защищенные методы доступны только для экземпляров классов-наследников. Хотя Test и Point напрямую наследуют классу Object, они находятся в разных ветках. Использовать метод clone() класса Object для объекта класса Test можно только в текущем же объекте класса Test(это делается в первом примере. Без переопределения метода clone() в классе Test). Для Point только в текущем объекте класса Point.

Вот рабочий вариант этого примера:

package intuit.tutor;

/**
 * Created by Talosar on 17.06.2015.
 */
public class Test implements Cloneable {
    Point p;
    int height;

    public Test(int x, int y, int z) {
        p=new Point(x, y);
        height=z;
    }

    public static void main(String s[]) {
        Test t1=new Test(1, 2, 3), t2=null;
        try {
            t2=(Test) t1.clone();
        } catch (CloneNotSupportedException e) {
            System.out.println("Some class doesn't implement Cloneable interface");
        }
        t1.p.x=-1;
        t1.height=-1;
        System.out.println("t2.p.x=" + t2.p.x + ", t2.p.y=" + t2.p.y +", t2.height=" + t2.height);
        System.out.println("t1.p.x=" + t1.p.x + ", t1.p.y=" + t1.p.y +", t1.height=" + t1.height);
    }

    protected Object clone() throws CloneNotSupportedException {
        Test clone=null;
        clone=(Test) super.clone();
        clone.p = (Point) this.p.clone();
        return clone;
    }
}

class Point implements Cloneable{
    public int x;
    public int y;

    Point(){
        super();
        x=0;
        y=0;
    }

    Point(int x, int y){
        super();
        this.x = x;
        this.y = y;
    }

    public Object clone() throws CloneNotSupportedException {
        Point clone=null;
        clone=(Point) super.clone();
        return clone;
    }
}

Будут еще вопросы - задавайте,  постараюсь вам помочь. Если что-то не удалось разъяснить  - уточняйте. 

Дмитрий Протопопов
Дмитрий Протопопов | Репутация: 10 (Без статуса) 18 июня 2015 в 02:00

К слову, второй рабочий вариант для этого примера – импортировать стандартный класс java.awt.Point. В этом случае вам не придется писать ничего своего для того, чтоб примера из лекции заработал, т.к. java.awt.Point по цепочке наследования реализует интерфейс Cloneable и переопределяет метод clone() с public модификатором доступа.

Алексей Амелькин
Добрый день! Помогите пожалуйста!

Здравствуйте! В связи с поступлением в университет на специальность бизнес-информатика нуждаюсь в подготовке по информатике, основам программирования,написания программ и работе в 1С. Подскажите по каким программам нужно начать обучение, в том числе программирпованию с нуля. Есть опыт небольшой работы с компьютером, но этого мало для осознания дела. А в будущем мне это очень пригодится! Помогите пожалуйста!

Михаил Малинкин
Михаил Малинкин | Репутация: 1036 (Эксперт) 17 марта 2014 в 12:17

Добрый день. Начните с этих курсов: http://www.intuit.ru/studies/courses/1092/538/info ; http://www.intuit.ru/studies/courses/2193/67/info , а затем определяйтесь с языком программирования и переходите к курсам по основам выбранного Вами языка. В описаниях курсов, обращайте внимание на списки дополнительных и предварительных курсов, если таковые имеются. Что касается программирования для 1С, то посмотрите следующие курсы: http://www.intuit.ru/studies/courses/2318/618/info ; http://www.intuit.ru/studies/courses/2321/621/info .

Ирина Захарова
Ирина Захарова | Репутация: 2 (Без голоса) 8 июня 2015 в 17:51

Полезная информация. Спасибо.

Дмитрий Беляев
Как создавать качественные сайты?
Немного знаю язык htm и сss, хотелось бы понять в каком направлении двигаться дальше?
Михаил Малинкин
Михаил Малинкин | Репутация: 1036 (Эксперт) 26 июня 2013 в 15:58

А чтобы сайт был качественным, то следует обратить внимание на Ajax, JavaScript, Framework.

Александр Фоменко
Александр Фоменко | Репутация: 148 (Кандидат) 19 ноября 2013 в 03:22

можно асинхронно двигаться еще в сторону ASP.NET MVC, если хотите двигаться.

Кирилл Румянцев
Почему не выдается код для DreamSpark?
Я прошёл более двух тестов и хочу получить код для DreamSpark. Кликаю на ссылку "Получить код.", а вылетает "Для получения кода DreamSpark Вам необходимо сдать два теста по данному курсу."
Vika Gorina
Помогите пожалуйста составить программу. задание:
Найти первый член последовательности, для которого выполнено условие |an-an-1|
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Aa Aa
Aa Aa | Репутация: 2135 (Эксперт) 28 ноября 2010 в 18:12

Начните с составления блок-схемы алгоритма:
1. Вычисляете значение 1-го члена последовательности (A1).
2. Задаете положительное число E.
3. Вычисляете A(n+1).
4. Вычисляете R=|A(n+1)-An|
5. Если R<E, то переходим к 5, иначе перходим к 2.
6. Вывод ответа.
7. Конец.

Виталий Крылов
Виталий Крылов | Репутация: 1063 (Эксперт) 29 ноября 2010 в 01:38

На каком языке надо написать?
И к какому сроку?

Сергей Смирнов
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Светлана П
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Aa Aa
Aa Aa | Репутация: 2135 (Эксперт) 18 октября 2010 в 08:42

1. FTP-сервер может быть источником любой информации. Смотря что на него положить. Если это FTP-сервер учебного или научного заведения, то есть вероятность найти на нём научную информацию. Но чтобы сделать эту информацию доступной для других, ссылки на эти ресурсы часто располагают на web-сайтах.
2. http://www.intuit.ru/department/office/toolsyandex/3/4.html - пример использования FTP при создании сайта.

Антон Антонов
Антон Антонов | Репутация: 103 (Кандидат) 19 октября 2010 в 12:44

Вот также неплохой пример использования FTP при создании сайта

Чингиз Кабыкенов
Aa Aa
Aa Aa | Репутация: 2135 (Эксперт) 16 сентября 2010 в 16:26

Понять, что произошло и как с этим бороться, вам поможет лекция Обеспечение безопасности в файловой системе NTFS из курса Администрирование сетей Microsoft Windows XP Professional.

Александр Лычагин
Александр Лычагин | Репутация: 102 (Кандидат) 16 сентября 2010 в 22:35

Один из вариантов - загрузиться используя LiveCD или аналогичное ПО и скопировать все необходимые файлы в директорию на новый HDD

Сергей Сергеев
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Анатолий Кругляк
Анатолий Кругляк | Репутация: 100 (Кандидат) 13 июня 2010 в 21:15

В том что в телефоне установлена програмное обеспечение не рассчитанное для выполнения функций приравниемых к ПК, а КПК (коммуникаторы) их програмное обеспечение написано дабы уменьшить устройства с большими возможностями, такие как например в ПК только программы, не все будут работать, а возможно и вовсе не будут работать из за малого размера оперативной памяти и слабого процессора в отличии от ПК

Андрей Абрамов
Андрей Абрамов | Репутация: 563 (Специалист) 15 июня 2010 в 01:40

Именно ОС и будет отличаться, как минимум версией. Ну а ассемблер зависит только от процессора.

Виталий Роденбергер
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Александр Петров
Александр Петров | Репутация: 409 (Кандидат) 12 мая 2010 в 04:05

В функцию нельзя ничего записать! Функцию можно вызвать, в функцию можно передать значения, но записать - нет.
Что значит "увеличить на 5"? Увеличить размер массива? Увеличить значения этого массива?
Отвечать на некорректно заданный вопрос нет никакого желания, посему лишь поправлю предыдущего отвечальщика: использование realloc в паре с new - некорректно!

Виктор Феоктистов
Виктор Феоктистов | Репутация: 117 (Кандидат) 13 мая 2010 в 08:18

Да, ошибся. Либо malloc и realloc, либо new и {new новый, скопировать из старого в новый, delete старый и присвоить указатель на новый массив вместо старого}

Николай Авдеев
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Виталий Крылов
Виталий Крылов | Репутация: 1063 (Эксперт) 26 декабря 2009 в 15:37

  Сейчас уже надо начинать с С#. Однако, отвечая на Ваш вопрос, лучше всего начать с С++ (от Бьерна Страуструпа).
  Курс по C++ (от Бьерна Страуструпа) можно найти на сайте ИНТУИТ.ру:
http://www.intuit.ru/department/pl/cpp2/,
также Вам можно порекомендовать начать изучать C++ по следующей книге:
http://www.intuit.ru/department/pl/cpp/

Александр Пузанов
Александр Пузанов | Репутация: 1145 (Эксперт) 27 декабря 2009 в 00:37

СИ – язык системного программирования, сейчас в основном используется для написания базовых компонентов операционных систем (ядро) и драйверов устройств.
Если вы не планируете этим заниматься, этот этап можно пропустить.
Основное отличие С++ от чистого СИ наличие ориентированность на обьектное программирование (объекты, классы).
Также есть особенности в языке, вносимые средой разработки (Visual С++ , C++ Builder).
Так что лучше сразу изучать конкретный «диалект» на котором будет вестись разработка приложений.

Дмитрий Балаев
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Aa Aa
Aa Aa | Репутация: 2135 (Эксперт) 8 декабря 2009 в 20:51

В языке Паскаль тип массива задается с использованием специального слова array (англ. – массив), и его объявление в программе выглядит следующим образом:Type < имя _ типа >= array [ I ] of T; где I – тип индекса массива, T – тип его элементов.Можно описывать сразу переменные типа массив, т.е. в разделе описания переменных: Var a,b: array [ I ] of T; Обычно тип индекса характеризуется некоторым диапазоном значений любого порядкового типа : I 1 .. I n . Например, индексы могут изменяться в диапазоне 1..20 или ‘ a ’..’ n ’.При этом длину массива Паскаля характеризует выражение:ord ( I n )- ord ( I 1 )+1. Вот, например, объявление двух типов: vector в виде массива Паскаля из 10 целых чисел и stroka в виде массива из 256 символов:    Type     Vector=array [1..10] of integer;     Stroka=array [0..255] of char; С помощью индекса массива можно обращаться к отдельным элементам любого массива, как к обычной переменной: можно получать значение этого элемента, отдельно присваивать ему значение, использовать его в выражениях.Опишем переменные типа vector и stroka : Var a: vector; c: stroka; далее в программе мы можем обращаться к отдельным элементам массива a или c . Например, a [5]:=23; c [1]:=’ w ’; a [7]:= a [5]*2; writeln ( c [1], c [3]).

Андрей Абрамов
Андрей Абрамов | Репутация: 563 (Специалист) 10 декабря 2009 в 08:52

Описанные согласно стандартам языка.

Настасья Кулаева
Aa Aa
Aa Aa | Репутация: 2135 (Эксперт) 8 декабря 2009 в 20:55

PDF Annotator - оригинальная программа, позволяющая добавлять комментарии и заметки к PDF-документам. С ее помощью можно вносить правки в документы в этом формате, добавлять подписи, визуально выделять некоторые фрагменты, а также добавлять рисунки. Интересно, что для добавления пометок в документы можно использовать не только клавиатуру и мышь, но и графический планшет. Если для комментариев требуется больше места, то можно добавлять в PDF-документ пустые страницы и заполнять их. Оставленные заметки могут быть сохранены в виде отдельного файла. Для его просмотра не требуется никакого дополнительного программного обеспечения. Если возникла необходимость убрать все пометки в документе, это можно сделать одним щелчком мыши.Официальный сайт: http://www.ograhl.com/en/pdfannotator/Тип распространения : SharewareТекущая версия : 2.0.0.250Интерфейс : EnglishРазмер : 19.4 Mb

Андрей Абрамов
Андрей Абрамов | Репутация: 563 (Специалист) 10 декабря 2009 в 08:38

Авторы файлов PDF могут включить эту функцию в программе Adobe Acrobat Pro, Acrobat Pro Extended или LiveCycle ES. Включение этой функции для файлов PDF позволяет пользователям приложения Adobe Reader заполнять формы, добавлять комментарии и другие пометки, разрешать общий доступ к файлам и отправлять по электронной почте заполненный документ.

Nikolay Kompanec
Асылбек Набиев
Асылбек Набиев | Репутация: 113 (Кандидат) 3 ноября 2009 в 10:47

Если это делать на Убунтуйном сервере, то это не представляет проблем.. При установке сервера можешь отметить галкой ltsp.. Всё остальное система сделает сама.. если делать серьезную установку.. То основную проблему представляет не сам ltsp, а настройка соответствующей маршрутизации и проброса нужного широковещательного сетевого траффика.. Что конкретно Вы хотите реализовать? Какой дистрибутив, сеть, характер нагрузки?

Дмитрий Душин
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Виталий Крылов
Виталий Крылов | Репутация: 1063 (Эксперт) 27 октября 2009 в 20:41

Почитать можно, например, здесь:
http://www.cyberguru.ru/programming/visual-cpp/
А купить можно здесь:
http://www.ozon.ru/context/detail/id/2192536/

Сергей Гвизда
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Игорь Штомпель
Игорь Штомпель | Репутация: 107 (Кандидат) 6 октября 2009 в 18:31

Зависит от операционной системы, которую вы используете. Укажите подробности.

Aa Aa
Aa Aa | Репутация: 2135 (Эксперт) 9 октября 2009 в 13:08

Существует 2 основных варианта:
1. Текст можно набрать в любом тестовом редакторе, сохранить как обычный текст в файл с расширением .c (желательно). Затем из командной строки запустить компилятор языка C, передав ему имя файла с тестом программы в качестве параметра.
2. Использовать систему разработки для языка C со встроенным редактором, например, как самое простое, Turbo C.
p.s. Подробности зависят от выбранных вами версии языка, компилятора и операционной системы.

Айрат Хафизов
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Ярослав Кавун
Ярослав Кавун | Репутация: 124 (Кандидат) 9 сентября 2009 в 21:46

System.Management.ManagementClass class1 = new ManagementClass("Win32_PerfFormattedData_PerfOS_Processor");foreach (ManagementObject ob in class1.GetInstances()){ label2.Text="Name - " + ob.GetPropertyValue("Name").ToString().Trim();                object percents = ob.GetPropertyValue("PercentProcessorTime"); if (percents != null) label1.Text = "PercentProcessorTime - " + percents;else label1.Text = "PercentProcessorTime - null";}

Денис Белошеев
Теги:
.net, , actionscript, ada, ado.net ...еще >>
Константин Иванов
Константин Иванов | Репутация: 608 (Специалист) 13 августа 2009 в 21:52

Я не помню точно но что то подобное у майкрософтов предлагалось в SQL Server 2008. Там как то сама БД может посылать сигнал программе о том что в ней что то изменилось. Задайте этот вопрос на форумах по MS SQL

Владимир Борзенков
Владимир Борзенков | Репутация: 592 (Специалист) 13 августа 2009 в 22:57

Правильность полученого ответа зависит от правильности поставленого вопроса. Какими средствами Вы собираетесь отображать информацию из своей базы? С помощью какого визуализатара создаёте её? И вообще: для каких целей необходимо видить изменения в базе?- для контроля можно использовать одни средства, для наглядности - другие, но зачастую информацию стараются скрыть (не всем необходимо знать, что твориться в Вашей базе!!!)