3669

Файли і сериалізація об'єктів

Лекция

Информатика, кибернетика и программирование

NET Framework часто виникають дві в загальному випадку схожі завдання: зберегти (прочитати) вміст даних (файлу) і зберегти (прочитати) поточне полягання об'єкту у файлі або в таблиці бази даних. Не дивлячись на безперечну схожість вказаних завдань, в рамках...

Украинкский

2012-11-05

160 KB

3 чел.

Файли і сериалізація об'єктів

У застосуваннях .NET Framework часто виникають дві в загальному випадку схожі завдання: зберегти (прочитати) вміст даних (файлу) і зберегти (прочитати) поточне полягання об'єкту у файлі або в таблиці бази даних. Не дивлячись на безперечну схожість вказаних завдань, в рамках .NET Framework для вирішення кожною з них передбачені свої класи. Класи обробки файлів зосереджені в просторі імен System.IO. Процес збереження поточного стану об'єкту в пам'яті або на носієві інформації називається сериалізацією об'єкту, а зворотний процес — десериалізацією. Ці процеси управляються класами, що знаходяться в просторі імен System.Runtime.Serialization.

Класи для роботи з файловою системою

Робота з файловою системою має на увазі обробку як папок (каталогів), так і зареєстрованих в них файлів. Відповідні класи визначені в просторі імен System. IO.

У табл. 19.1 перераховані класи, що використовуються для роботи з файловою системою.

Таблиця 19.1. Класи для роботи з файловою системою

Клас

Призначення

Directory

Містить статичні методи для створення і використання папок. Ці методи можна викликати без створення відповідних об'єктів

Directorylnf

Містить властивості і методи для створення і використання тек. Доступ до членів класу можливий тільки після створення його екземпляра

File

Містить статичні методи для роботи з файлами. Ці методи можна викликати без створення об'єкту

File info

Містить методи для роботи з класами, які стають доступними після створення об'єкту цього класу

Path

Допоміжний клас для роботи з маршрутами доступу (шляхами)

Статичні класи Directory і File не вимагають створення відповідних об'єктів. Проте при зверненні до їх методів запускається система перевірки безпеки доступу до коду (Code Access System, CAS), що уповільнює роботу цих методів. У зв'язку з цим при обробці декількох папок (файлів) зручніше використовувати класи Directorylnfo і Filelnfо.

У 32-розрядних версіях Windows, як відомо, для передачі даних між різними пристроями (оперативною пам'яттю, дисковою пам'яттю, мережею) використовується концепція потоків даних (stream). Класи для роботи з потоками даних також визначені в просторі імен System.IO і представлені в табл. 19.2.

Таблиця 19.2. Класи для роботи з потоками даних

Клас

Призначення

MemoryStream

Сховище даних в оперативній пам'яті

Networkstream

Дозволяє передавати потік по мережевому з'єднанню

FileStream

Є базовим класом потоку для запису і читання файлів

BinaryReader

Прочитує дані з двійкових файлів

BinaryWriter

Записує дані в двійковий файл

StreamReader

Прочитує дані з текстових файлів

StreamWriter

Записує дані в текстовий файл

Створення і знищення папок

Створення і знищення теки (папки) найпростіше здійснювати методами CreateDirectory () і Delete () класу Directory. Наприклад:

using System.IO;

class Program 

{

static void Main(string[] args)

{

string DirPath = @"c:\C#_proba";    

if (Directory.Exists(DirPath))      

Directory.Delete(DirPath);         

Else  Directory.CreateDirectory(DirPath) ;

}

}

Рядок DirPath може містити вкладені теки. Якщо вони не існують, то при виконанні методу CreateDirectory вони будуть створені.

Метод Delete () видаляє порожню теку. Якщо потрібно знищити також порожні вкладені теки, йому передається параметр true.

Використовувати методи класу Directorylnf для тих же цілей менш зручно:

using System.IO;

class Program 

{

static void Main()

{

DirectoryInfo Dir = new DirectoryInfo(@"c:\C#_proba");

   if (!Dir.Exists()) Dir.Create ();

   else Dir.Delete(true);

}

}

При зверненні до конструктора DirectoryInfo () йому передається маршрут доступу до створюваної теки, але сама тека не створюється. Лише після перевірки факту відсутності теки вона створюється методом Create ().

Перевірка існування теки необхідна, оскільки спроба створити наново існуючу теку або знищити неіснуючу викличе виключення.

При зверненні до методу Delete йому передається логічний параметр, вказуючий на необхідність знищення вкладених тек.

Переміщення і копіювання тек

Для переміщення теки використовується метод Move () класу Directory або метод MoveTo () класу DirectoryInfo. Як параметри першому передаються імена обох тек, а другому — тільки ім'я теки призначення:

Directory.Move("FromMove", "ToMove");

DirectoryInfo Dir = new DirectoryInfo("FromMove");

Dir.Create();

Dir.MoveTo("ToMove");

Фактично, методи Move () і MoveTo () не переміщають теку, а лише перейменовують її, причому обидві теки повинні знаходитися в одному і тому ж розділі одного і того ж диска. Після виконання методу початкова тека зникає, якщо її ім'я відрізняється від імені теки призначення. Методи Move() і MoveTo() зазвичай використовують для додавання вкладених тек в що вже існують. В цьому випадку ім'я теки призначення повторює ім'я початкової теки і розширює її іменами вкладених тек:

Directory.Move("FromMove" @"FromMove\SubFolderl\SubFolder2");

На практиці значно частіше виникає проблема фізичної зміни положення теки, наприклад перенесення її на інший дисковий носій. Для цього необхідно скопіювати вміст початкової теки в теку призначення. Я детально не розглядатиму це загалом нетривіальне завдання. Скажу лише, що вона вирішується рекурсивним викликом деякої процедури, якою передаються імена обох тек. У процедурі є видимим вміст початкової теки, і її файли копіюються в теку призначення. Якщо серед файлів зустрічається вкладена тека, процедура викликає сама себе (це і називається рекурсивним викликом), але вже з іншими іменами теки.

При копіюванні потрібно передбачити можливість відсутності теки призначення, існування в ній копійованого файлу і ін. Оскільки все це виходить за рамки обговорюваної теми, в наступному прикладі можливість такого роду супутніх проблем ігнорується.

Показана в лістингу 18.1 програма  копіює файли з тієї, що однієї поставляється з Visual Studio тек в іншу. У вибраній для копіювання теці відсутні вкладені теки, що виключає необхідність рекурсії. Копійовані файли замінюють однойменні файли, що існують в теці призначення.

Лістинг 19.1. Копіювання теки

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

namespace CopyDir

{

   class Program

   {

       static void Main(string[] args)

       {

string FromDir = @"d:\Program Files\Microsoft Visual Studio 8\ReportViewer";  // Звідки копіюємо

string ToDir = @"d:\ReportViewer\";   // Куди копіюємо

if (!Directory.Exists(ToDir))         // Тека ToDir існує?

Directory.CreateDirectory(ToDir);  // -Нет. Створюємо її

string[] Files;    // Приймач імен файлів - динамічний масив

// Отримуємо всі елементи копійованої теки:

Files = Directory.GetFileSystemEntries(FromDir); // Цикл копіювання:

           for (int k = 0; k < Files.Length; k++)

           {

    // Отримуємо ім'я чергового файлу:

string FromFile = Path.GetFileName(Files[k]);

     // Отримуємо його атрибути:

               FileAttributes FileAttr = File.GetAttributes(Files[k]);

               if ((FileAttr & FileAttributes.Directory) == FileAttributes.Directory)      //Это тека?

                   continue;                                                             // -Да. Пропускаємо її

               Console.WriteLine(FromFile);

               string ToFile = ToDir + FromFile;

               File.Copy(Files[k], ToFile, true);// Копіюємо файл }

               Console.ReadLine();

           }

       }

   }

}

Нагадаю, що практично у всіх сучасних операційних системах (і в Windows зокрема) у файловій системі використовуються так звані таблиці розміщення файлів (File Allocation Tables, FAT). У цих таблицях указуються файли кореневого каталога і вкладені теки верхнього рівня. У FAT кожної вкладеної теки, у свою чергу, указуються файли і вкладені теки. У кожному рядку FAT крім імені файлу (теки) указуються також додаткові відомості: початковий кластер розташування файлу (теки), дата створення і зокрема так звані файлові атрибути, які задаються перерахуванням System. 10. FileAttributes. Значення цього перерахування вказані в табл. 19.3.

Таблиця 19.3. Значення перерахування FileAttributes 

Значення

Опис

Archived

Звичайний файл, доступний для копіювання і видалення

Compressed

Стислий файл

Device

Зарезервовано для майбутнього використання

Directory

Вкладена тека

Encrypted

Файл зашифрований (якщо мова йде про файлі) або всі включені у теку файли зашифровані (якщо мова йде про теці)

Hidden

Прихований файл

Normal

Звичайний файл, для якого не можуть бути встановлені никакие інші атрибути

NotContentlndexed

Файл не може бути індексований службою індексації контексту операційної системи

Offline

Файл не підключений, і його дані в даний час недоступні I

Readonly

Файл, призначений тільки для читання

ReparsePoint

Файл містить крапку репера, тобто блок даних, ассоциированных з іншими файлом або текою

SparseFile

«Рихлий» файл, велика частина якого містить нулі

System

Системний файл, який може використовувати тільки операци-   I онная система

Temporary

Тимчасовий файл I

Елементи перерахувань в С# можуть зв'язуватися з будь-якими цілочисельними константами. Перерахування FileAttributes зв'язується з послідовністю констант 1, 2, 4, 8 і т. д., тобто файловим атрибутом може бути комбінація перерахованих значень. Використовувана в прикладі перевірка блокує обробку будь якої теки:

if ((FileAttr & FileAttributes.Directory) == FileAttributes.Directory) continue;

У вибраній для копіювання теці немає вкладених тек, тому вказана перевірка не потрібна. Але на практиці для копіювання не тільки файлів, але і всіх вкладених тек замість оператора continue слід вставити код, що реалізовує рекурсивний виклик процедури обходу дерева каталогів (тек).

Дослідження інформації про рядок в таблиці FAT

Інформація про одиничний рядок FAT зберігається у властивостях класу FileSystemInfо. В табл. 19.4 перераховані ці властивості.

Таблиця 19.4. Властивості класу FileSystemlnfo 

Властивість

Опис

Attributes

Атрибути

CreationTime

Час створення файлу (теки)

GreationTimeUTC

Час створення у форматі UTC (Universal Time Coordinated

усесвітній скоординований час). Час у форматі UTC відповідає часу по грінвічському меридіану і координується з показаннями атомних годинників

Exists

Ознака існування

Extension

Розширення файлу

FullName

Повне ім'я (з маршрутом доступу)

LastAccess Time

Час останнього звернення до файлу (теці)

LastAccessTimeUTC

Час останнього звернення у форматі UTC

LastWriteTime

Час останньої зміни

LastWriteTimeUTC

Час останньої зміни у форматі UTC

Name

Ім'я файлу (теки)

Класи DirectoryInfo і FileInfo є спадкоємцями базового класу FileSystemInfo і набувають всіх його властивостей.

Лістинг 19.2 ілюструє використання класу DirectoryInfo.

Лістинг 19.2. Використання класу DirectoryInfo

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

namespace DirInfo

{

class Program 

{

static void Main(string[] args)

{

DirectoryInfo DirInfo = new DirectoryInfo(@"c:\Program Files");

   Console.WriteLine("{0,30}1}", "Повне ім'я:",DirInfo.FullName);

   Console . WriteLine (" { 0, 30 } {1} ", "Ім'я : ", DirInfo.Name) ;

   Console.WriteLine("{0,30}1}", "Час створення:",DirInfo.CreationTime);

   Console.WriteLine("{0,30}1}", "Час створення UTC:",DirInfo.CreationTimeUtc);

   Console.WriteLine("{0,30}1}", "Ознака існування:",DirInfo.Exists);

Console.WriteLine("{0,30} {1} ", "Розширення:", DirInfo.Extension);

Console.WriteLine("{0,30}1}", "Час останнього доступу:",DirInfo.LastAccessTime);

Console.WriteLine ("{0,30}1}", "Час останнього оновлення:",DirInfo.LastWriteTime);

   Console.WriteLine("{0,30}1}", "Атрибути:", DirInfo.Attributes);

   Console.ReadLine();

}

}

}

Запис і читання файлів

Техніка роботи з файлами залежить від типу файлу (текстовий або двійковий).

Обробка текстових файлів

При роботі з текстовими файлами спочатку створюється потік класу FileSteram. Дані записуються у файл за допомогою допоміжного об'єкту класу

StraamWriter, а читаються об'єктом класу StreamReader, В лістингу 19.3 показаний приклад роботи з текстовим файлом .

Лістинг 19.3. Робота з текстовим файлом

using System;

using  System.Collections.Generic;

using System.Text;

using System.IO;

namespace StringFileDemo

{

class Program

{

static void Main(string[] ergs)

{

// Запис i текстовий файл:

FileStream Stream = new FileStream("strings.dat",FileMode.Create, FileAccess.Write);

   StreamWriter Writer = new StreamWriter(Stream);

   Writer.WriteLine("Мело, мело по всій Землі");

   Writer.WriteLine("У всі межі.");

   Writer.WriteLine("Свічка горіла на столі.");

   Writer.WriteLine("Свічка горіла...");

   Writer.Close();

   Stream.Close();

   // Читання з файлу:

   Stream = new FileStream("strings.dat",FileMode.Open, FileAccess.Read);

   StreamReader Reader = new StreamReader(Stream);

   string S; do 

   {

   S = Reader.ReadLine();

       if (S != null)

       Console.WriteLine(S);

   }

   while (S != null);

   Reader.Close();

   Stream.Close();

   Console.ReadLine();

}

}

}

При створенні об'єкту FileStream йому передаються ім'я файлу і два параметри: FileMode, що визначає спосіб створення потоку, і FileAccess, регулюючий доступ потоку до даним.

У табл. 19.5 і 19.6 указуються допустимі значення цих параметрів.

Для потоку існує поняття поточного запису — в цей запис поміщаються дані і з неї вони прочитуються.

Положенням поточного запису можна управляти за допомогою методу Seek (), що має таку сигнатуру:

public virtual long Seek(int Offset, SeekOrigin Origin);

Тут Offset — зсув щодо позиції, вказаної параметром Origin. Перерахування SeekOrigin може мати значення, вказане в табл. 18.7.

Таблиця 19.5. Значення параметра FileMode

Значення

Опис

Append

Додає записи в існуючий файл або створює новий. Вимагає, щоб параметр FileMode мав значення Write

Create

Створює новий файл або переписує той, що існує. Вимагає щоб параметр FileMode мав значення Write

CreateNew 

Створює новий файл, а якщо він вже існує, виникає виключення. Вимагає, щоб параметр FileMode мав значення Write 

Open

Відкриває існуючий файл. Якщо файлу немає, виникає виключення

OpenOrCreate

Відкриває той, що існує або створює новий файл, якщо він ще не створений

Truncate

Відкриває існуючий файл і робить його розмір рівним нулю

Таблиця 19.6. Значення параметра FileAccess

Значення

Опис

Read

Потік може читати дані

ReadWrite

Потік може читати і записувати дані

Write

Потік може записувати дані

Таблиця 19.7. Значення перерахування SeekOrigin

Значення

Опис

Begin

Відповідає початку потоку

Current

Відповідає поточному запису потоку

End

Відповідає кінцю потоку

Таким чином, вказаний далі виклик зробить поточним запис з індексом 10 від початку потоку (індексація починається з 0):

Stream.Seek(10, SeekOrigin.Begin);

Фізичний запис даних у файл реалізується у момент закриття потоку методом Close () або виштовхування записів з проміжного буфера методом Flush (). У другому випадку потік не закривається і готовий до продовження операцій.

При читанні рядків з текстового файлу потрібно контролювати кінець файлу. Для цього змінна типу string в С# може приймати значення null, якщо з файлe нічого не прочитано, тобто якщо файл вичерпаний (див. показаний раніше приклад). Іншим способом контролю є звернення до методу StreamReader.Peek(), який повертає позитивне число, якщо файл не вичерпаний, або -1 інакше. Таким чином, цикл читання записів з текстового файлу  спрощується:

while   (Reader.Peek()   >  0) Console.WriteLine(Reader.ReadLine());

Обробка двійкових файлів

Обробка двійкових файлів багато в чому подібна до обробки текстових: спочатку створюється потік, потім — об'єкти BinaryWriter або BinaryReader залежно від напряму передачі даних (у файл або з файлу).

За допомогою методу Write () об'єкту BinaryWrite дані передаються у файл. Метод Write () має безліч переобтяжених варіантів, що дозволяють записувати у файл будь-які дані (зокрема рядки string, так що ділення файлів на рядкових і двійкових носить чисто умовний характер).

Об'єкт BinaryReader має метод Read(), призначений для читання з потоку масиву символів або байтів. Крім того, він має численні методи Read  (ReadBoolean (), ReadByte(), ReadDouble (), ReadString () і т. д.) для читання значень примітивних типів. Його метод PeekChar () дозволяє контролювати кінець файлу: подібно до розглянутого раніше методу Stream-Reader . Peek (), він повертає -1, якщо файл вичерпаний.

Серіалізация

Як вже мовилося на початку цього розділу .NET Framework підтримує цікаву технологію збереження поточного стану об'єкту на деякому носієві інформації. Ця технологія називається сериалізацією об'єкту. Серіалізований об'єкт може бути переданий по мережі на інший комп'ютер і там відновлений в первинному стані — цей процес називається десериалізацією.

Техніка сериализации

Особливістю сериализации є те, що її можна застосовувати тільки до класів, що підтримують цю процедуру. Для цього клас повинен оголошуватися з атрибутом [Serializable] або в його оголошенні повинна бути явна вказівка на те, що він виконує інтерфейс ISerializable. Наприклад:

[Serializable]

Book = class(System.Object)

{

string Title;

string Author;

string Publish;

int Year; }

Лише відносно невелику кількість (менше 40) стандартних CTS-классов реалізують інтерфейс ISsriallzabls. Це, в основному, класи, використовувані як сховища дані (DataSet, DataTabls, TreeNods і деякі інші). У інтерфейсі ISarializabla визначений єдиний метод QetObactDaia такого вигляду:

void GitObjtetData(Strialiiatlonlnfo Info,   StrtamingGontext Centext);

Параметр Info містить дані, a Context — поточний стан потоку даних, На практиці спеціальні класи, що реалізовують інтерфейс ISsrializable, створюються для обслуговування нестандартних типів даних. В більшості випадків цього можна не робити — достатньо лише вставити атрибут [Serializable] перед оголошенням класу, як це зроблено в попередньому прикладі.

При сериалізації середовище CLR створює граф об'єкту і за допомогою цього графа зберігає об'єкт разом з пов'язаними з ним об'єктами. Кожен об'єкт, пов'язаний з основним об'єктом, отримує унікальний ідентифікатор. При десериалізації може зустрітися випадок, коли об'єкт посилається на ідентифікатор ще не відновленого об'єкту. В цьому випадку CLR коректує порядок відновлення об'єктів.

Оголосивши тим або іншим способом, що клас підтримує сериалізацію, ми повинні вибрати формат представлення його об'єкту. Технологія .NET Framework пропонує для цієї мети два формати: двійковий і SOAP (Simple Object Access Protocol — простій протокол доступу до об'єкту). У першому випадку створюється об'єкт класу BinaryFormatter, що належить простору імен System. Runtime. Serialization. Formatters. Binary, в другому — об'єкт класу SoapFormatter, що належить простору імен System.Runtime.Serialization .Formatters.Soap.

Приклад

Описану технологію ілюструє проста програма з лістингу 19.4

Лістинг 19.4. Ілюстрація сериалізація/десериалізація

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

namespace SerialDemo

{

   [Serializable]

   class Book

       /* Обєкти класу Book містять інформацію про книгу.

       Ці об'єкти піддаватимуться сериализации/десериализации. */

   {

       public string Title;     // Назва книги

       public string Author;    // Автор

       public string Publish;  // Видавництво

       public int Ytar;       // Рік випуску

       // Конеяруквор класу!

       public Book(string tit, string aut, string pub, int ytar)

       {

           Title = tit;

           Author = aut;

           Publish = pub;

           Ytar = ytar;

       }

   }

   class Program

   {

       static void Main(string[] arge)

       {

           // Масив для тарах книг:

           Book[] Books = new Book[3];

           // Наповнюємо його:

Books[0] - new Book("C# і платформа .NET", "Троєлсен", "Пітер", 2005);

Books[1] - new Book("ASP.NET. Мистецтво содания веб-сайтів", "Уолтер", "Диа-софт", 2002);

Books[2] - new Book("Грибний цар", "Поляків", "РОСМЕН", 2005);

           // Створюємо потік для сериализации:

FileStream Stream = new FileStream("books.dat", FileMode.Create, FileAccess.Write);

           // Використовуваний двійковий формат:

           BinaryFormatter fmt = new BinaryFormatter();

           fmt.Serialize(Stream, Books);            // Серіалізуєм об'єкти

           Stream.Close();                      // Закриваємо потік

           // Створюємо потік для десериализации:

           Stream = new FileStream("books.dat", FileMode.Open, FileAccess.Read);

           // Створюємо ще одне сховище книг:

           Book[] Bks = new Book[3];

           Bks = (Book[])fmt.Deserialize(Stream);  // Десеріалізуєм

           // Виводимо результат:

           for (int k = 0; k < 3; k++)

           {

               Console.WriteLine("{0,40}, {1, 8}, {2, 8}, {3}", Bks[k].Title, Bks[k].Author, Bks[k].Publish, Bks[k].Year);

           }

           Console.ReadLine();

       }

   }

}

При десериализации виконується явне приведення отримуваного масиву об'єктів до типу Воок[]:

Bks  =   (Воок[])fmt.Deserialize(Stream);

Якщо цього не зробити, компілятор повідомить про несумісність типів Book [ ] і Object: метод Deserialize () завжди повертає дані як об'єкти класу Object.

Якщо якісь члени класу не повинні брати участь в сериаліації/десериалізації, вони позначаються атрибутом [NonSerialized]:

[NonSerialized] public int Year;

Приклад алгоритму запису масиву надано в лістингу 19.5.

Лістинг 19.5. Запис одновимірного масиву на диск.

Добавити клас

using System.IO  

Console.WriteLine("Введіть число ");

int n = Int32.Parse(Console.ReadLine());

StreamWriter wr = new StreamWriter("1.txt");

wr.WriteLine(Int32.Parse(Convert.ToString(n)));

int[] a = new int[n + 2];

Random r = new Random();

 for (int i = 1; i <= n; i++)

           {

a[i] = r.Next(100);

       wr.WriteLine(Int32.Parse(Convert.ToString(a[i])));

               Console.Write(a[i] + " ");

           }

Console.WriteLine();

   wr.Close();

      int[] b = new int[n + 2];

         StreamReader re = new StreamReader("1.txt");

              String word="";

                 word=re.ReadLine();

                  String time="";

 for (int i = 1; i <= Convert.ToUInt32(word); i++)

           {

 time= re.ReadLine();

     b[i] = Convert.ToInt32(time);

       Console.Write("a["+ Convert.ToString(i)+ "]= "+ b[i]+" ");

           }

 Console.ReadLine(); 


 

А также другие работы, которые могут Вас заинтересовать

28209. Культурно-историческая психология (Л.С.Выготский, А.Н.Леонтьев) 50 KB
  Важнейшее отличие деятельности человека от поведения животных заключается в использовании человеком орудий труда для преобразования мира и сохранении этих орудий. Центральный момент возникновение символической деятельности овладение словесным знаком. Процесс формирования высшей психической функции отнюдь не мгновенен он растянут на десятилетие зарождаясь в речевом общении и завершаясь в полноценной символической деятельности. Общение со взрослым овладение способами интеллектуальной деятельности под его руководством как бы задают...
28210. Гуманистическая психология (А.Маслоу, К.Роджерс и др.) 46 KB
  По мнению Маслоу психоанализ обедняет представление о человеке сосредоточившись на больных людях и болезненных проявлениях личности. А где же собственно человеческое в человеке Именно это и призывал изучать Маслоу. Абрахам Маслоу 1908 1970 американский психолог один из основателей гуманистич. Согласно Маслоу эти особенности существуя в виде врожденных потенций актуализируются под влиянием социальных условий.
28211. Екологія. Основи екології 1.36 MB
  Вирішення екологічних проблем людства залишається основним завданням сучасного розвитку. Екологізація економіки передбачає формування нового екологічно орієнтованого мислення. Екологічна освіта стає базовим знанням
28212. Виды ощущений. Сенсорная организация человека (по Б.Г.Ананьеву) 39.5 KB
  Так тактильные вибрационные мышечные вестибулярные ощущения отражают определенные моменты и свойства механического движения различных тел в том числе и тела человека. Интерорецепция вкусовые болевые температурные ощущения специфически связаны с основными явлениями жизнедеятельности биологической формой движения материи. Биологические формы движения интероцептивные болевые вкусовые температурные ощущения В совместной деятельности различных анализаторов имеется объективный порядок постоянных взаимосвязей определяемых общностью...
28213. Психологичсское значение дистантных ощущений. Отражение пространства при парной работе дистантных анализаторов 42 KB
  1 базальные ощущения тактилънокинестетическое осязание 2 ведущие зрение слух от них идет максимальная информация 3 сквозные ощущения кинестетические движение. Дистанционные ощущения в процессе эволюции развились позже контактных: вибро и хеморецепция обоняние слух зрение как повышение адаптивных возможностей организма ОТРАЖЕНИЕ ПРОСТРАНСТВА функция парных анализаторов напр. Бинокулярное зрение. При раздражении несоответствующих диспарантных точек бинокулярное зрение или диссоциируется раздваевается или...
28214. Операциональная природа мышления как процесса отражения связей и отношений. Виды мыслительных операций 45.5 KB
  Операциональная природа мышления как процесса отражения связей и отношений. Виды мышления =стадии развития: 1Нагляднодейственное элементарная форма практического мышления направленного на разрешение элементарных практических задач. Виды мышления: А. Типологические классификации мышления: При построении типологий виды мышления обычно различаются попарно как противостоящие друг другу по тем или иным конкретным характеристикам.
28215. Развитие мышления в онтогенезе: сравнительный анализ эмпирических характеристик допонятийного и понятийного мышления 43.5 KB
  Мышление высший психический процесс обобщенного и опосредованного отражения действительности в ходе ее анализа и синтеза при обязательном участии языка речи. В онтогенезе мышление развивается по пути все большей генерализации признаков и объединения их в более крупные классы.Допонятийное мышление нагляднодейственное через практическое действие с объектом нагляднообразное с помощью образных представлений 2.Понятийное мышление словеснологическое с помощью логических понятий и знаков Допонятийное мышление мышление при...
28216. Понятия «эгоцентризм» и «децентрация» в стадиальной концепции интеллекта Жана Пиаже 36.5 KB
  Пиаже показал что ребенок на определенной ступени развития в большинстве случаев рассматривает предметы такими какими их дает непосредственное восприятие то есть он не видит вещи в их внутренних отношениях. Ребенок думает например что луна следует за ним во время его прогулок останавливается когда он останавливается бежит за ним когда он убегает. Свое мгновенное восприятие ребенок считает абсолютно истинным. Вербальный эгоцентризм ребенка определяется тем что ребенок говорит не пытаясь воздействовать на собеседника и не осознает...
28217. Стадии формирования понятия (по Выготскому). Методы исследования и диагностики понятийного мышления 42 KB
  Методы исследования и диагностики понятийного мышления. Понятийное мышление ведущий вид мышления характеризуется использованием понятий логических конструкций которые существуют на базе языка и языковых средств. Понятийное мышление осознанное вербальное мышление. С ее помощью было установлено что формирование понятий у детей проходит через 3 основные ступени: Образование неоформленного неупорядоченного множества отдельных предметов их синкретического сцепления обозначаемого одним словом.