Преобразование или приобразование как пишется правильно

Как утверждается во многих источниках, падежи необходимы нам для правильной постановки предложения, чтобы люди могли понимать друг друга, могли правильно

Как утверждается во многих источниках, падежи необходимы нам для правильной постановки предложения, чтобы люди могли понимать друг друга, могли правильно и грамотно изъяснять свои желания. В русском языке имеют место быть такие названия падежей: предложный, творительный, именительный, дательный и винительный. Ах да, еще и родительный. Именно о нем пойдет речь далее. Родительный является косвенным падежом. Он выражает, своего рода, отношение принадлежности. Падеж имеет практически любая часть речи, но присваивается падеж по имени существительному.

Вопросы родительного падежа.

Родительный падеж отвечает на вопросы «кого?», «чего?»
. В дополнение к эти вопросам добавляют слово «нет». «(Нет) Кого? Чего?». Для примера, возьмем слово «рубашка», в родительном падеже оно будет выглядеть как «рубашки

».

Окончания и примеры слов в родительном падеже.

Слово, отвечающее на вопросы «Кого?», «Чего» будет находиться в родительном падеже и при этом иметь окончания в единственном числе первого склонения – «ы», «и» (нет крысы

); в единственном числе второго склонения – «а», «я» (нет берега

), и в третьем склонении – «и» (нет грязи

). Во множественном числе слова, склоняемые в родительный падеж, будут иметь окончания: в первом склонении окончание у слова будет нулевым, во втором – «ов» (докторов

), и в третьем склонении «ев», «ей» (мазей

). Чаще всего родительный падеж идет в содружестве с предлогами: «от», «с», «из». Хотелось бы еще так же отметить, что родительный падеж выполняет ряд функций:

  • разделительная — «часть из на

    с»;
  • притяжательная — «переулок района

    »;
  • отложительная — «выйти из дома

    ».

Большинство русских фамилий склоняется по падежам согласно правилам русского языка. Однако есть много фамилий иностранного происхождения, окончания которых отличаются от типичных окончаний русских фамилий. Возникают два вопроса: склонять их или нет, как склонять? Рассмотрим разные случаи склонения фамилий:

1. Фамилии, оканчивающиеся на -ов/ев, -ин/ын, -ский/ской, -цкий/цкой, составляют основную часть русских фамилий. Их склонение обычно не вызывает вопросов и происходит с добавлением окончаний по следующим правилам:

Таблица 1. Фамилии на -ов/-ова

Падеж

Вопрос падежа

Мужская фамилия

Женская фамилия

Множественное число
И.п.

кто?

Иванов

Иванова

Ивановы

Р.п.

кого?

Иванова

Ивановой

Ивановых

Д.п.

кому?

Иванову

Ивановой

Ивановым

В.п.

кого?

Иванова

Иванову

Ивановых

Т.п.

кем?

Ивановым

Ивановой

Ивановыми

П.п.

о ком?

об Иванове

об Ивановой

об Ивановых

Таблица 2. Фамилии на -ский/-ская

Падеж

Вопрос падежа

Мужская фамилия

Женская фамилия

Множественное число
И.п.

кто?

Ахтырский

Ахтырская

Ахтырские

Р.п.

кого?

Ахтырского

Ахтырской

Ахтырских

Д.п.

кому?

Ахтырскому

Ахтырской

Ахтырским

В.п.

кого?

Ахтырского

Ахтырскую

Ахтырских

Т.п.

кем?

Ахтырским

Ахтырской

Ахтырскими

П.п.

о ком?

об Ахтырском

об Ахтырской

об Ахтырских

2. Фамилии, созвучные прилагательным, склоняются в соответствии со склонением прилагательных в мужском и женском роде и в множественном числе: Лихой, Толстая, Белый, Великий.

Таблица 3. Фамилии, созвучные прилагательным

Падеж

Вопрос падежа

Мужская фамилия

Женская фамилия

Множественное число
И.п.

кто? какой/какая?

Лихой

Лихая

Лихие

Р.п.

кого? какого/какой?

Лихого

Лихой

Лихих

Д.п.

кому? какому/какой?

Лихому

Лихой

Лихим

В.п.

кого? какого/какую?

Лихого

Лихую

Лихих

Т.п.

кем? каким/какой?

Лихим

Лихой

Лихими

П.п.

о ком? о каком/о какой?

о Лихом

о Лихой

о Лихих

3. Фамилии, созвучные существительным, склоняются в соответствии с полом, грамматический род не влияет на склонение. В том числе иноязычные без ударения на последний слог. Примеры фамилий: Мельник, Гитара, Бык, Ворона, Черноус, Щерба, Кафка. Фамилии мужского рода (Мельник, Трус) склоняются у мужчин по правилу склонения существительных мужского рода, у женщин и во множественном числе не склоняются. Фамилии женского рода (Гитара, Пятница) у мужчин и женщин склоняются по правилам склонения существительных женского рода, во множественном числе фамилия имеет форму именительного падежа у мужчин и не склоняется по падежам.

Таблица 4. Фамилии, созвучные существительным в мужском роде

Падеж

Вопрос падежа

Мужская фамилия

Женская фамилия

Множественное число
И.п.

кто?

Мельник

Мельник

Мельник

Р.п.

кого?

Мельника

Д.п.

кому?

Мельнику

В.п.

кого?

Мельника

Т.п.

кем?

Мельником

П.п.

о ком?

о Мельнике

Таблица 5. Фамилии, созвучные существительным в женском роде

Падеж

Вопрос падежа

Мужская фамилия

Женская фамилия

Множественное число
И.п.

кто?

Гитара

Гитара

Гитара

Р.п.

кого?

Гитары

Гитары

Д.п.

кому?

Гитаре

Гитаре

В.п.

кого?

Гитару

Гитару

Т.п.

кем?

Гитарой

Гитарой

П.п.

о ком?

о Гитаре

Гитаре

Примечание 1.
Стоит уточнять ударение в фамилиях, оканчивающихся на -а, так как от этого зависит окончание творительного падежа. Сравните: Лéвша — Левшей, Левшá — Левшой.
Примечание 2.
Французские фамилии с ударным окончанием -а,-я, не склоняются: Эмилю Золя, Пьером Брока, об Александре Дюма.

Правила и примеры склонения мужских и женских имён, отчеств, фамилий.

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

Знание правил родного языка однозначно поможет вам при обращении к людям по именам, отчествам, фамилиям.

Поговорим подробнее об особенностях их склонения для мужских и женских вариантов.

Правильное склонение фамилии мужского рода: правило, пример

shkolnik ishet v knige primeri pravilnogo skloneniya familii
shkolnik ishet v knige primeri pravilnogo skloneniya familii школьник ищет в книге примеры правильного склонения фамилий

В зависимости от происхождения, наличия/отсутствия гласной на конце слова либо согласной букв фамилии мужского рода имеют ряд правил для склонения.

Глобально разделим их на 2 большие группы:

  • меняющие окончания
  • сохраняющиеся без изменений

К первой группе правил относятся:

  • -ов, -ин для русских и заимствованных вариантов склоняются по классической схеме. Например
    , работа Иванова, картина принадлежит Санину, жду Сидорова, говорить с Фонвизиным о Крысине.
  • Фамилии иностранцев на -ин, -ов в творительном падеже приобретают окончание -ом. Пример
    : роль сыграна Чаплином, герой озвучен Грином.
  • Когда носитель фамилии русский и она происходит от русских омонимов, срабатывает правило с окончанием -ым в творительном падеже.
    Пример
    : от слова крона — идём с Крониным, от диалектного варианта чапля — катание с Чаплиным.
  • Неударные окончания -а, -я склоняются по общим правилам.
    Например
    , тетрадь Глобы, автомобиль Шегды, постановка Окуджавы.
  • Грузинские на -ия меняют окончания, например
    , заслуги Берии.
  • -а ударное на конце фамилий славянского происхождения предполагают изменение окончаний, например
    , с Квашей и Сковородой.
  • Твердая или мягкая согласная на конце фамилии превращаются в сочетания с гласными при склонении.
    Например
    , стихи Блока, интервью с Гафтом, передать Мицкевичу.
  • В форме прилагательного склоняется по общим правилам.
    Например
    , победы Лютого, поход к Толстому.

3d84073c0bf5c2618df17907fd29107d
3d84073c0bf5c2618df17907fd29107d

2bd9038369ac7c54176318d468c16d26
2bd9038369ac7c54176318d468c16d26

ae205de17f7e2da883ebe75565a92792
ae205de17f7e2da883ebe75565a92792

Ко второй группе правил относятся следующие:

  • иностранные на -иа остаются без изменений,
  • -а, -я ударные французского происхождения не склоняются, например, карета Дюма, письма о Золя,
  • -ко на конце не склоняются,
  • с окончаниями на -о, -у, -и, -е, -ю остаются без изменений при склонении,
  • -ых на конце сохраняет фамилию неизменной при склонении.

24614bd10407c9bbbd625ce6ad2b2fe2
24614bd10407c9bbbd625ce6ad2b2fe2

ad137842b40fc87139b6ea64ba662c96
ad137842b40fc87139b6ea64ba662c96

fdd2b1323c92cc4a85cf6b2d16d888ce
fdd2b1323c92cc4a85cf6b2d16d888ce

Правильное склонение мужского имени: правило, пример

mudraya sova iz multfilma razyasnyaet pravilo skloneniya muzhskih imen
mudraya sova iz multfilma razyasnyaet pravilo skloneniya muzhskih imen мудрая сова из мультфильма разъясняет правило склонения мужских имен

Мужские имена также бывают разного происхождения. Однако правила при их склонении одинаковы:

  • при окончании имени на согласную твердую либо мягкую букву или на -й изменения происходят по общему принципу склонения существительных.
    Ударение остается без изменений, но в однослоговых перемещается.
    Примеры
    : Александр — Александра — Александру, Петр — Петра — Петру, Тимофей — Тимофея — Тимофею.
  • -ия, -я, -ья, -ея аналогичны с особенностями склонения существительных с подобным окончанием.
    Пример
    : Илья — Ильи — Илье, Захария — Захарии — Захарию.
  • -а — изменение окончания соответствует правилу склонения обычных существительных с -а на конце.
    Пример
    : Никита — Никиты — Никите.

Поскольку в русском языке много иностранных слов и имён людей других национальностей, вторые в ряде случаев не подпадают под правила склонения и остаются неизменными. Это имена, заканчивающиеся на:

  • гласные -ю, -у, -ы, -и, -э, -е, -о. Пример, Хосе, Айбу
  • две гласные, кроме -ия, -ея. Пример, Франсуа, Качаа

Правильное склонение отчества мужского рода: правило, пример

ребенок школьного возраста просматривает на планшете правила и примеры склонения мужского отчества

Отметим ряд особенностей перед переходом к склонению мужских отчеств:

  • Классические окончания, а именно -евич, -ович.
    Пример, Александр- Александрович, Тимофей — Тимофеевич.
  • Добавление мягкого знака перед окончанием, если имя отца заканчивается на -ий, то есть -ьевич.
    Пример, Валерий — Валерьевич.
  • Если имя отца заканчивается на -а, то в отчестве добавляется -ич. Пример, Лука — Лукич, Никита — Никитич.

Добавим таблицу с изменениями окончаний в мужских отчествах при склонении их по падежам:

tablica skloneniya muzhskih otchestv po padezham
tablica skloneniya muzhskih otchestv po padezham таблица склонения мужских отчеств по падежам

Правильное склонение фамилии женского рода: правило, пример

stopka otkritith knig s primerami pravilnogo skloneniya zhenskih imyon
stopka otkritith knig s primerami pravilnogo skloneniya zhenskih imyon стопка открытых книг с примерами правильного склонения женских фамилий

Женские фамилии имеют ряд отличий от мужских при склонении.

  • С окончанием на -ина, -ова меняются по падежам. Например, у Шукшиной, для Ивановой.
  • В зависимости от особенностей склонения мужских фамилий существует разница и для женских вариантов. Например, Смородина, Жемчужина. В этом случае склонение в женских вариантах — приезд Нади Смородины и Лины Жемчужины. Если мужские варианты Смородин и Жемчужин, то женские соответственно — прибытие Зои Смородиной и Кати Жемчужиной.
  • Неударные -а и -я меняют окончание при склонении. Пример, Валентины Глобы, Катерине Окуджаве.
  • Похожие на прилагательные изменяют окончание по принципу склонения прилагательных. Пример: Лены Великой, Татьяне Светлой.

Отсутствие склонений для фамилий:

  • французского происхождения
  • с окончанием на -ко, -о, -е, -и, -у, -ю, -ых а также на согласную букву

Правильное склонение женского имени: правило, пример

devochka v ochkah viglyadivaet iz za knig v kotorih iskala pravila skloneniya zhenskih imyon
devochka v ochkah viglyadivaet iz za knig v kotorih iskala pravila skloneniya zhenskih imyon девочка в очках выглядывает из-за книг, в которых искала правила склонения женских имён

В целом женские имена изменяют свое окончание при склонении. Есть ряд правил, которые регулируют это:

  • с окончанием на -а, кроме г, к, ц, х. Пример:

tablica skloneniya zhenskih imen s okonchaniem na a
tablica skloneniya zhenskih imen s okonchaniem na a таблица склонения женских имен с окончанием на -а

  • то же окончание после г, к, х и отдельно после ц

tablica skloneniya zhenskih imen s okonchaniem na a posle g k h
tablica skloneniya zhenskih imen s okonchaniem na a posle g k h таблица склонения женских имен с окончанием на -а после г. к, х

90c55fc5ca26c9b60b786c90dd8ce1de
90c55fc5ca26c9b60b786c90dd8ce1de таблица склонения женских имен с окончанием на -а после ц

  • двусложные имена на -я, а также те, что имеют эту букву безударной, меняют свои окончания по падежам так:

tablica skloneniya zhenskih imen zakanchivayushihsya na ya
tablica skloneniya zhenskih imen zakanchivayushihsya na ya таблица склонения женских имен, заканчивающихся на -я

  • с окончанием на -ия, кроме двусложных. Пример ниже:

primer skloneniya zhenskih imen na iya v tablice
primer skloneniya zhenskih imen na iya v tablice пример склонения женских имен на -ия в таблице

  • с окончанием на мягкий знак и шипящие — меняются следующим образом:

tablici skloneniya zhenskih imen imeyushih okonchanie v imenitelnom padezhe na myagkii znak i shipyashuyu bukvu
tablici skloneniya zhenskih imen imeyushih okonchanie v imenitelnom padezhe na myagkii znak i shipyashuyu bukvu таблицы склонения женских имен, имеющих окончание в именительном падеже на мягкий знак и шипящую букву

Исключения составляют ряд женских имён иностранного происхождения. Они зачастую не склоняются.

Примерами выступают те же имена, что были представлены в таблице выше, которые имеют шипящую букву на конце.

Правильное склонение отчества женского рода: правило, пример

ustavshii shkolnik za partoi nakrilsya otkritim uchebnikom s pravilami skloneniya otchestva zhenskogo roda
ustavshii shkolnik za partoi nakrilsya otkritim uchebnikom s pravilami skloneniya otchestva zhenskogo roda уставший школьник за партой накрылся открытым учебником с правилами склонения отчества женского рода

Существуют ряд правил склонения женских отчеств в зависимости от их образования от мужских имён. А именно:

  • имена с окончанием на неударное -а образуют отчества с -ична. Если последний слог мужского имени с ударением, то -инична. Пример: Никита — Нитична, Илья — Ильинична.
  • Если в основе имена второго склонения с нулевым и окончанием на -ий, то в отчестве добавляются -овна, -евна. Пример: Евгений — Евгениевна, Владимир — Владимировна.

Вставляем для наглядности таблицу склонения женских отчеств:

tablica izmeneniya okonchanii v zhenskih otchestvah pri sklonenii ih po padezham
tablica izmeneniya okonchanii v zhenskih otchestvah pri sklonenii ih po padezham таблица изменения окончаний в женских отчествах при склонении их по падежам

Итак, мы рассмотрели ряд правил для склонения фамилий, имён и отчеств для мужчин и женщин. А также изучили их на примерах.

Практикуйте правила, склоняя имена, отчества и фамилии своих родных. Тогда и все правила запомнятся вам быстрее.

Удачных занятий!

Видео: как склонять фамилии по падежам?

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

Имеется достаточное количество решений (в том числе и в «коробке»), которые позволяют проводить преобразование из именительного в любой другой падеж. А вот чтобы наоборот — таких, думаю, встретится не очень много. Одно из них опишу в этой статье и приложу его исходные файлы.

Почему решений по обратному преобразованию падежей почти нет? Задача, вроде бы, актуальная. Скорее всего, это из-за того, что порой однозначно верно преобразовать русскую фамилию к именительному падежу не всегда получается даже у человека. Что уж говорить про алгоритмы для машин. Приведенное в статье решение тоже не всегда позволит преобразовать фамилию в именительный падеж однозначно верно. Но большинство случаев вполне может обработать.

Какие встречаются сложности

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

Также у некоторых фамилий окончания в склонении могут быть гласными: «-ы», «-и», «-у», «-ю», «-е». Обычно фамилии, имеющие такие окончания, относятся к несклоняемым, и поэтому при обратном преобразовании сложно определить, является ли такая фамилия несклоняемой или получила такое окончание в результате склонения.

Если бы для решения подобной задачи использовались модные сейчас нейронные сети, то скорее всего они справились бы с задачей лучше. Но и трудоемкость реализации тогда будет выше. В этой статье описан относительно простой вариант реализации, анализирующий окончания фамилий.

Чуть-чуть теории и особенностей

В решении рассматриваются русские фамилии (т.к. в задаче, которую пришлось решать преобразовывались в основном именно русские фамилии). Хотя, как говорится, «поскреби русского — найдёшь татарина». Поэтому многие нерусские фамилии или фамилии, имеющие изначально не русские корни с окончаниями на «-их», «-ин», «-ов» (напр., Брюллов, Либних), будут тоже хорошо преобразовываться.

Углубляться в историю происхождения фамилий я не буду, хотя тема очень интересная. А вот то, что в фамилиях интересно вкратце рассмотрю. А интересно: окончания фамилий, отличия мужских и женских фамилий.

Большинство русских мужских фамилий имеют окончания «-ов/-ев», «-ин/-ын» (Иванов, Алексеев, Ивашкин). В дательном падеже окончания будут соответствовать «-ову/-еву», «-ину/ыну». Поэтому если фамилия оканчивается на «-ову/-еву» (Петрову, Шмелеву), «-ину/ыну» (Моськину, Синицыну), то обратное преобразование можно произвести, просто убрав последнюю букву «у» из окончания. Тогда получим фамилии в именительном падеже (Петров у, Шмелев у, Моськин у, Синицын у).

Аналогичные окончания фамилий, но уже в женском роде будут такими: «-ова/-ева», «-ина/-ына». В дательном падеже они примут вид: «-овой/-евой» (Петровой, Шмелевой), «-иной/ыной» (Моськиной, Синицыной). Обратное преобразование в именительный падеж можно выполнить, убрав из окончания последние «ой» и затем добавив «а» (Петров ой а, Шмелев ой а, Моськин ой а, Синицын ой а).

Перебрав таким образом все основные окончания фамилий можно получить подобную таблицу преобразования:

А дальше уже дело техники. Можно написать небольшую функцию, которая ищет окончания фамилий в таблице. Если окончание найдено, то функция проводит преобразование фамилии по заданному в таблице правилу. Пример функции, реализующей такое преобразование см. по ссылке в конце материала.

Таблицу можно дополнять, но делать это нужно аккуратно, чтобы не было перекрытий окончаний фамилий. Например, если добавить окончание «-нова», а в таблице уже есть окончание «-ова», то функция сначала найдет окончание «-ова» и произведет преобразование по нему.

Пример кода на ISBL:

// На вход: строка в виде перечисленных через запятую Фамилия И.О.
Addresses = «г-ну Сергееву С.С., Иванову А., Снигиреву А.»
// В WorkerIDsList функция возвращает список строк с ИД найденных работников.
WorkerIDsList = PadegGetWorkerIDsByString(Addresses)
// ИД работников через запятую
showmessage(WorkerIDsList.DelimitedText)

В русском языке ФИО в родительном падеже изменяются преимущественно так же, как и другие собственные существительные – в зависимости от склонения, к которому они относятся. Примеры фамилий имен отчеств в родительном падеже: книга Ивановой Елены Сергеевны, труды Льва Николаевича Толстого, квартира Черных Марьям Александровны.

Склонение фамилий в родительном падеже

Основные склоняемые типы и примеры фамилий в родительном падеже представлены в таблице:

Мужской род Женский род Множественной число
Фамилии на – ов/ев, – ин/ын, – ский/ской, – цкий/цкой ПетровА, ПшеницынА, ЧацкОго, БоровскОго ПетровОй, ПшеницынОй, ЧацкОй, БоровскОй ПетровЫх, ПшеницынЫх, ЧацкИх, БоровскИх
Фамилии, созвучные прилагательным ЧернОго, КрымскОго, ТолстОго, ЛихОго ЧернОй, КрымскОй, ТолстОй, ЛихОй Черных, КрымскИх, ТолстЫх, ЛихИх
Фамилии, созвучные существительным МельникА, КоролЯ, ВоронА Мельник, Король, Ворон Мельник, Король, Ворон
ПятницЫ, КафкИ, ЗемлИ ПятницЫ, КафкИ, ЗемлИ ПятницА, КафкА, ЗемлЯ
Фамилии с беглыми гласными ЛьвА, ЗайцА Лев, Заяц Лев, Заяц
Двойные фамилии Соловьева-Седого, Ткач-ПреображенскОго Соловьевой-Седой, Ткач-ПреображенскОй Соловьевых-Седых Ткач-ПреображенскИх

Склонение имен в родительном падеже

Примеры склонения имен в родительном падеже:

Обратите внимание: в имени Любовь в родительном падеже не происходит выпадение корневого гласного “о”.

Склонение отчеств в родительном падеже

В родительном падеже отчества склоняются следующим образом:

Исключения

Несклоняемые существительные, обозначающие фамилии и имена, в родительном падеже употребляются в форме, омонимичной их начальной. К таким существительным относятся:

    Французские фамилии с ударным окончанием – а; Фамилии с основой на – ко, – е, – и, – у, – ю и созвучные со средним родом на – о; Фамилии без грамматического рода с основой на – их/ых; Нерусские женские имена с основой на твердую согласную и на – и; Имена с окончаниями – о, – у, – ю, – е, – ы, .
  1. Что такое склонение существительных? Склонение существительных в русском языке – постоянные грамматический признак, указывающий на особенности изменения существительных по падежам и числам. Выделяют три продуктивных…
  2. Типы склонений имен прилагательных Склонение прилагательных в русском языке – постоянный грамматический признак прилагательных, указывающий на особенности изменения слов по числам, родам и падежам. Выделяют…
  3. Особенности склонения ФИО в дательном падеже Форму дательного падежа в русском языке имеют фамилии, имена и отчества, конечные элементы которых поддаются русскому словоизменению: Фамилии,…
  4. Что такое винительный падеж? Винительный падеж в русском языке является косвенным падежом, выражающим объектное, субъектное или обстоятельственное значения. Винительный падеж отвечает на вопросы – Кого?…
  5. Правописание падежных окончаний имен существительных Падежные окончания существительных представлены системой окончаний, указывающих на грамматическое отношение существительных к другим словам в предложениях и словосочетаниях. Падежные окончания…
  6. Что такое родительный падеж? Родительный падеж в русском языке – косвенный падеж, выражающий значение определения предмета, а также субъектные или объектные отношения. Существительные в родительном…
  7. Для изучающих немецкий язык склонение (скл.) имен существительных представляется очень важной и не самой простой темой. В немецком различают три типа скл.: сильное (иначе его…
  8. Что такое предложный падеж? Предложный падеж в русском языке – косвенный падеж, который употребляется в речи исключительно с предлогами. Существительные в предложном падеже отвечают на…
  9. Немецкие фамилии стали появляться и распространяться с 12 века. Но только в 1875 году они стали регистрироваться и записываться. С тех пор у каждого немца…
  10. Прилагательное (прил.) – слово, которое означает признаки или качества предмета. Прил. имена в немецком делятся на качественные (interessant – интересный, schlecht – плохой) и относительные…
  11. МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РФ ХАКАССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. Н. Ф. КАТАНОВА ИНСТИТУТ ФИЛОЛОГИИ, КАФЕДРА РУССКОГО ЯЗЫКА специальность 021700 – “Филология” Абакан, 2001 ВВЕДЕНИЕ…
  12. Полная форма немецких прилагательных (прил.) является склоняемой, то есть согласуется с именем существительным, перед которым такое прил. занимает место в предложении в качестве его определения….
  13. Особенности окончаний в предложном падеже В предложном падеже окончания существительных в единственном числе зависят от типа их склонения. Во множественном числе предложного падежа существительные всех…
  14. Особенности правописания окончаний творительного падежа В русском языке падежные формы творительного падежа имеют существительные и прилагательные, имеющие падежные окончания Т. п. и отвечающие на вопросы…
  15. Правила употребления имен прилагательных с неопределенным артиклем и без артикля. Возможны 2 способа запомнить эти правила: механический и логический. МЕХАНИЧЕСКИЙ СПОСОБ (запоминание) Окончания прилагательного после…

Последнее обновление: 28.12.2021

В предыдущей главе мы говорили о преобразованиях объектов простых типов. Сейчас затронем тему преобразования объектов классов. Допустим, у нас есть
следующая иерархия классов:

class Person
{
	public string Name { get; set; }
	public Person(string name)
	{
		Name = name;
	}
	public void Print()
	{
		Console.WriteLine($"Person {Name}");
	}
}

class Employee : Person
{
	public string Company { get; set; }
	public Employee(string name, string company) : base(name)
	{
		Company = company;
	}
}

class Client : Person
{
	public string Bank { get; set; }
	public Client(string name, string bank) : base(name)
	{
		Bank = bank;
	}
}

В этой иерархии классов мы можем проследить следующую цепь наследования: Object (все классы неявно наследуются от типа Object) -> Person -> Employee|Client.

Причем в этой иерархии классов базовые типы находятся вверху, а производные типы — внизу.

Восходящие преобразования. Upcasting

Объекты производного типа (который находится внизу иерархии) в то же время представляют и базовый тип. Например, объект Employee в то же время является и
объектом класса Person. Что в принципе естественно, так как каждый сотрудник (Employee) является человеком (Person). И мы можем написать, например,
следующим образом:

Employee employee = new Employee("Tom", "Microsoft");
Person person = employee;   // преобразование от Employee к Person

Console.WriteLine(person.Name); 

В данном случае переменной person, которая представляет тип Person, присваивается ссылка на объект Employee.
Но чтобы сохранить ссылку на объект одного класса в переменную другого класса, необходимо выполнить преобразование типов — в данном случае от типа Employee
к типу Person. И так как Employee наследуется от класса Person, то автоматически выполняется неявное восходящее преобразование — преобразование к типу,
которые находятся вверху иерархии классов, то есть к базовому классу.

В итоге переменные employee и person будут указывать на один и тот же объект в памяти, но переменной person будет доступна только та часть, которая представляет функционал типа Person.

Подобным образом поизводятся и другие восходящие преобразования:

Person bob = new Client("Bob", "ContosoBank");   // преобразование от Client к Person

Здесь переменная bob, которая представляет тип Person, хранит ссылку на объект Client, поэтому также выполняется
восходящее неявное преобразование от производного класса Client к базовому типу Person.

Восходящее неявное преобразование будет происходить и в следующем случае:

object person1 = new Employee("Tom", "Microsoft");	// от Employee к object
object person2 = new Client("Bob", "ContosoBank");	// от Client к object
object person3 = new Person("Sam");					// от Person к object

Так как тип object — базовый для всех остальных типов, то преобразование к нему будет производиться автоматически.

Нисходящие преобразования. Downcasting

Но кроме восходящих преобразований от производного к базовому типу есть нисходящие преобразования или downcasting — от базового типа к производному. Например,
в следующем коде переменная person хранит ссылку на объект Employee:

Employee employee = new Employee("Tom", "Microsoft");
Person person = employee;   // преобразование от Employee к Person

И может возникнуть вопрос, можно ли обратиться к функционалу типа Employee через переменную типа Person. Но автоматически такие преобразования не проходят, ведь не каждый
человек (объект Person) является сотрудником предприятия (объектом Employee).
И для нисходящего преобразования необходимо применить явное преобразование, указав в скобках тип, к которому нужно выполнить преобразование:

Employee employee1 = new Employee("Tom", "Microsoft");
Person person = employee1;   // преобразование от Employee к Person

//Employee employee2 = person;    // так нельзя, нужно явное преобразование
Employee employee2 = (Employee)person;  // преобразование от Person к Employee

Рассмотрим некоторые примеры преобразований:

// Объект Employee также представляет тип object
object obj = new Employee("Bill", "Microsoft");

// чтобы обратиться к возможностям типа Employee, приводим объект к типу Employee
Employee employee = (Employee) obj;

// объект Client также представляет тип Person
Person person = new Client("Sam", "ContosoBank");
// преобразование от типа Person к Client
Client client = (Client)person;

В первом случае переменной obj присвоена ссылка на объект Employee, поэтому мы можем преобразовать объект obj к любому типу который располагается в иерархии
классов между типом object и Employee.

Если нам надо обратиться к каким-то отдельным свойствам или методам объекта, то нам необязательно присваивать преобразованный объект переменной:

// Объект Employee также представляет тип object
object obj = new Employee("Bill", "Microsoft");

// преобразование к типу Person для вызова метода Print
((Person)obj).Print();
// либо так
// ((Employee)obj).Print();

// преобразование к типу Employee, чтобы получить свойство Company
string company = ((Employee)obj).Company;

В то же время необходимо соблюдать осторожность при подобных преобразованиях. Например, что будет в следующем случае:

// Объект Employee также представляет тип object
object obj = new Employee("Bill", "Microsoft");

// преобразование к типу Client, чтобы получить свойство Bank
string bank = ((Client)obj).Bank;

В данном случае мы получим ошибку, так как переменная obj хранит ссылку на объект Employee. Данный объект является также объектом типов object и Person,
поэтому мы можем преобразовать его к этим типам. Но к типу Client мы преобразовать не можем.

Другой пример:

Employee employee1 = new Person("Tom");	// ! Ошибка

Person person = new Person("Bob");
Employee employee2 = (Employee) person;	// ! Ошибка

В данном случае мы пытаемся преобразовать объект типа Person к типу Employee, а объект Person не является объектом Employee.
Причем в последнем случае Visual Studio не подскжет, что в данной строке ошибка, и данная строка даже нормально скомилируется, тем не менее
в процессе выполнения программы мы получим ощибку. В этом в том числе и кроектся коварство преобразований, поэтому в подобных ситуациях надо проявлять осторожность.

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

Способы преобразований

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

Person person = new Person("Tom");
Employee? employee = person as Employee;
if (employee == null)
{
    Console.WriteLine("Преобразование прошло неудачно");
}
else
{
    Console.WriteLine(employee.Company);
}

Стоит отметить, что переменная employee здесь определяется не просто как переменная Employee, а именно Employee? — после названия типа ставится вопросительный знак. Что указывает,
что переменная может хранить как значение null, так и значение Employee.

Второй способ заключается в проверке допустимости преобразования с помощью ключевого слова is:

значение is тип

Если значение слева от оператора представляет тип, указаный справа от оператора, то оператор is возвращает true, иначе возвращается false.

Причем оператор is позволяет автоматически преобразовать значение к типу, если это значение представляет данный тип. Например:

Person person = new Person("Tom");
if (person is Employee employee)
{
    Console.WriteLine(employee.Company);
}
else
{
    Console.WriteLine("Преобразование не допустимо");
}

Выражение if (person is Employee employee) проверяет, является ли переменная person объектом типа Employee. И если person является объектом
Employee, то автоматически преобразует значение переменной person в тип Employee и преобразованное значение сохраняет в переменную employee. Далее в блоке if мы можем
использовать объект employee как значение типа Employee.

Однако, если person не является объектом Employee, как в данном случае, то такая проверка вернет значение false, и преобразование
не сработает.

Оператор is также можно применять и без преобразования, просто проверяя на соответствие типу:

Person person = new Person("Tom");
if (person is Employee)
{
    Console.WriteLine("Представляет тип Employee");
}
else
{
    Console.WriteLine("НЕ является объектом типа Employee");
}

  • Преклонить знамена как пишется
  • Преинтересный рассказ как пишется
  • Преклоняться перед мужеством как пишется
  • Преклонение как пишется правильно
  • Презрительный или призрительный как пишется