Is gene only the portion of a single strand which codes for a particular protein?
None of the highlighted regions in your figure, is a gene. A gene is a section of DNA which gives rise to a product. Basically, a gene has an orientation (5'→ 3') i.e. it is essentially a single stranded region. However, the strand that mechanistically contributes to RNA synthesis (template) has the reverse-complementary sequence of the gene (in other words, anti-sense). Therefore, a gene, as it is annotated is not a functional entity but a genomic representation of a product. Some viruses (such as M13 phage) have a single stranded genome; for them the transcript is always antisense to the genomic DNA region.

Same section of dsDNA can harbour multiple genes in both orientations and this is clearly seen in viruses which have an highly compact genomes. Other prokaryotic and eukaryotic genomes also have overlapping genes.

Some related posts: 


On which DNA strand is TATA box present? 
Do transcription factors bind to both strands of DNA?
Which DNA elements belong to the definition of a gene?





  Does that mean only the indicated region of molecule A is a gene? Or,
  does the Indicated portion of molecule A + Complementary portion
  present in molecule B comprise a single gene, such that A is sense and
  B is non-sense strand of the same gene?


If the molecules A and B are expressed from opposite strands, then they are considered products of different genes, even if the gene region overlaps.

The situation is more unclear if both the molecules are expressed from the same strand and the transcribed region overlaps. Sometimes they are classified under the same gene (splice variants) and sometimes they are not.

These are some lines from the human genome annotation file which tells the location of genes in the genome (+ and - denote opposite strands):


chr1    HAVANA  gene    1567474 1570639 .   +   .   gene_id "ENSG00000189409.8"; transcript_id "ENSG00000189409.8"; gene_type "protein_coding"; gene_status "KNOWN"; gene_name "MMP23B"; transcript_type "protein_coding"; transcript_status "KNOWN"; transcript_name "MMP23B"; level 2; havana_gene "OTTHUMG00000074713.4";
chr1    HAVANA  gene    1590786 1594063 .   +   .   gene_id "ENSG00000272004.1"; transcript_id "ENSG00000272004.1"; gene_type "antisense"; gene_status "NOVEL"; gene_name "RP11-345P4.10"; transcript_type "antisense"; transcript_status "NOVEL"; transcript_name "RP11-345P4.10"; level 2; havana_gene "OTTHUMG00000185638.1";
chr1    HAVANA  gene    1603429 1604850 .   +   .   gene_id "ENSG00000269737.1"; transcript_id "ENSG00000269737.1"; gene_type "antisense"; gene_status "NOVEL"; gene_name "RP11-345P4.7"; transcript_type "antisense"; transcript_status "NOVEL"; transcript_name "RP11-345P4.7"; level 2; havana_gene "OTTHUMG00000182604.1";
chr1    HAVANA  gene    1604714 1605836 .   +   .   gene_id "ENSG00000269227.1"; transcript_id "ENSG00000269227.1"; gene_type "pseudogene"; gene_status "KNOWN"; gene_name "RP11-345P4.6"; transcript_type "pseudogene"; transcript_status "KNOWN"; transcript_name "RP11-345P4.6"; level 1; tag "pseudo_consens"; havana_gene "OTTHUMG00000182605.1";
chr1    HAVANA  gene    1570603 1590473 .   -   .   gene_id "ENSG00000248333.3"; transcript_id "ENSG00000248333.3"; gene_type "protein_coding"; gene_status "KNOWN"; gene_name "CDK11B"; transcript_type "protein_coding"; transcript_status "KNOWN"; transcript_name "CDK11B"; level 2; havana_gene "OTTHUMG00000078638.4";
chr1    HAVANA  gene    1592939 1624167 .   -   .   gene_id "ENSG00000189339.7"; transcript_id "ENSG00000189339.7"; gene_type "protein_coding"; gene_status "KNOWN"; gene_name "SLC35E2B"; transcript_type "protein_coding"; transcript_status "KNOWN"; transcript_name "SLC35E2B"; level 2; havana_gene "OTTHUMG00000078639.1";
chr1    HAVANA  gene    1634169 1655766 .   -   .   gene_id "ENSG00000008128.18"; transcript_id "ENSG00000008128.18"; gene_type "protein_coding"; gene_status "KNOWN"; gene_name "CDK11A"; transcript_type "protein_coding"; transcript_status "KNOWN"; transcript_name "CDK11A"; level 2; havana_gene "OTTHUMG00000000703.14";
chr1    HAVANA  gene    1634175 1669127 .   -   .   gene_id "ENSG00000268575.1"; transcript_id "ENSG00000268575.1"; gene_type "processed_transcript"; gene_status "NOVEL"; gene_name "RP1-283E3.8"; transcript_type "processed_transcript"; transcript_status "NOVEL"; transcript_name "RP1-283E3.8"; level 2; havana_gene "OTTHUMG00000183552.1";


Not evident in these examples but there are many overlapping genes in opposite strands. Anti-sense lncRNAs would be an example to have a quick look at.



Bottomline: A single gene is on one of the DNA strands, not both.